<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
<title><![CDATA[铁芒网博]]></title>
<link>http://www.techmango.com/</link>
<description><![CDATA[学习技术，体验生活，打造最好的个人网络知识型博客]]></description>
<language>zh-cn</language>
<copyright><![CDATA[Copyright 2005 PBlog2 v2.4]]></copyright>
<webMaster><![CDATA[jimmysu_88@163.com(jimmysu)]]></webMaster>
<generator>PBlog2 v2.4</generator> 
<image>
	<title>铁芒网博</title> 
	<url>http://www.techmango.com/images/logos.gif</url> 
	<link>http://www.techmango.com/</link> 
	<description>铁芒网博</description> 
</image>

			<item>
			<link>http://www.techmango.com/default.asp?id=622</link>
			<title><![CDATA[何为人工智能？]]></title>
			<author>jimmysu_88@163.com(techmango)</author>
			<category><![CDATA[生活|网络百科]]></category>
			<pubDate>Wed,19 Nov 2008 09:20:01 +0800</pubDate>
			<guid>http://www.techmango.com/default.asp?id=622</guid>	
		<description><![CDATA[<p>&quot;<strong><font color="#333399">何为人工智能</font></strong>？&quot;这是一个很难回答的问题。如果你在《美国传统辞典》里找到&ldquo;人工智能&rdquo;这个词，可能会找到像这样的定义：&ldquo;计算机或其它机器有能力执行那些通常认为需要有智慧才能做的事。&rdquo;不过，有些文献则把人工智能定义成&ldquo;创建拥有智慧的机器的过程或科学&rdquo;。</p>
<p>有些专家认为，AI应该视为机器所展示的智能行为，或是智能行为背后的人工大脑。即使是这样的解释，也不够全面。有些专家对AI的研究，目的在于研究人类智慧的本质，而不是为了建造智能机器。</p>
<p>这样就会引发出一个问题：&ldquo;何谓智能？&rdquo;对某些人而言，判定标准是AI技术产生的效果有多么接近人类智慧的表现;其他人则认为还必须满足额外的条件，机器才能被视为具有智能，其中有些人主张，意识是智能的必要条件，而且情绪和意识也不可分割;另一派学者则说智能必须要能够解决问题，而且要看起来好像是由人类解决似的;但即使提出这么多的条件，也还不够全面，AI还必须有学习和适应的能力，才有资格被视为有智能。</p>
<p><br />满足上述所有条件的AI，就称为&ldquo;强势AI&rdquo;（Strong AI）。弱势AI不同于强势AI的地方，在于涉及到比较宽的用途和科技，让机器拥有专业化的智力。游戏AI属于弱势AI的范畴。</p>]]></description>
		</item>
		
			<item>
			<link>http://www.techmango.com/default.asp?id=621</link>
			<title><![CDATA[XML序列化与反序列化技术详解]]></title>
			<author>jimmysu_88@163.com(techmango)</author>
			<category><![CDATA[网页|CSS/DHTML]]></category>
			<pubDate>Tue,18 Nov 2008 14:58:57 +0800</pubDate>
			<guid>http://www.techmango.com/default.asp?id=621</guid>	
		<description><![CDATA[<p><strong><font color="#0000ff">XML的序列化与反序列化在软件开发起着非常重要的作用，应该牢固地掌握它。</font></strong></p>
<p><strong><font color="#000000">序列化与反序列化的代码实现：</font></strong></p>
<p><strong><font color="#339966">// OBJECT -&gt; XML</font></strong><br />&nbsp;&nbsp;&nbsp; public static void SaveXml(string filePath, object obj) { SaveXml(filePath, obj, obj.GetType()); }<br />&nbsp;&nbsp;&nbsp; public static void SaveXml(string filePath, object obj, System.Type type)<br />&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; using (System.IO.StreamWriter writer = new System.IO.StreamWriter(filePath))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.Xml.Serialization.XmlSerializer xs = new System.Xml.Serialization.XmlSerializer(type);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xs.Serialize(writer, obj);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; writer.Close();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; }<br /><font color="#339966">&nbsp;&nbsp;&nbsp; // XML -&gt; OBJECT</font><br />&nbsp;&nbsp;&nbsp; public static object LoadXml(string filePath, System.Type type)<br />&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (!System.IO.File.Exists(filePath))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return null;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; using (System.IO.StreamReader reader = new System.IO.StreamReader(filePath))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.Xml.Serialization.XmlSerializer xs = new System.Xml.Serialization.XmlSerializer(type);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; object obj = xs.Deserialize(reader);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; reader.Close();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return obj;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; } </p>
<p><strong><font color="#000000">相关的常用Attribute（命名空间System.Xml.Serialization ）解释：<br /></font></strong>&nbsp;&nbsp;&nbsp; [<font color="#339966">XmlRootAttribute</font>(&quot;PurchaseOrder&quot;, Namespace=&quot;<a href="http://www.cpandl.com/"><font color="#8d8c8c">http://www.cpandl.com</font></a>&quot;, IsNullable=false)]&nbsp; // 指定根 <br />&nbsp;&nbsp;&nbsp; [<font color="#339966">XmlIgnoreAttribute</font>]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 跳过不序列化<br />&nbsp;&nbsp;&nbsp; [<font color="#339966">XmlArrayAttribute</font>(&quot;Items&quot;)] public orderedItem[] orderedItems;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 层次序列化: &lt;Items&gt;&lt;OrderedItem.../&gt;&lt;OrderedItem.../&gt;..&lt;/Items&gt;<br />&nbsp;&nbsp;&nbsp; [<font color="#339966">XmlElementAttribute</font>(ElementName=&quot;Link&quot;, IsNullable=false)] public Link[] Links;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 平面序列化: &lt;Link ..../&gt;&lt;Link .../&gt;...<br />&nbsp;&nbsp;&nbsp; [<font color="#339966">XmlAttribute</font>(&quot;Cat&quot;)] public string Cat;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 表现为属性&lt;... Cat=.. /&gt;<br />&nbsp;&nbsp;&nbsp; [<font color="#339966">XmlElementAttribute</font>(IsNullable=false)]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 表现为节点&lt;Cat&gt;..&lt;/cat&gt; </p>
<p><br />&nbsp;&nbsp;&nbsp; <font color="#0000ff">XmlAttributes</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 表示一个特性对象的集合，这些对象控制 XmlSerializer 如何序列化和反序列化对象。 <br />&nbsp;&nbsp;&nbsp; <font color="#0000ff">XmlArrayAttribute</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 指定 XmlSerializer 应将特定的类成员序列化为 XML 元素数组。 <br />&nbsp;&nbsp;&nbsp; <font color="#0000ff">XmlArrayItemAttribute</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 指定 XmlSerializer 可以放置在序列化数组中的派生类型。 <br />&nbsp;&nbsp;&nbsp; <font color="#0000ff">XmlArrayItemAttributes</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 表示 XmlArrayItemAttribute 对象的集合。 <br />&nbsp;&nbsp;&nbsp; <font color="#0000ff">XmlAttributeAttribute</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 指定 XmlSerializer 应将类成员作为 XML 特性序列化。 <br />&nbsp;&nbsp;&nbsp; <font color="#0000ff">XmlChoiceIdentifierAttribute</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 指定可以通过使用枚举来进一步消除成员的歧义。 <br />&nbsp;&nbsp;&nbsp; <font color="#0000ff">XmlElementAttribute</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在 XmlSerializer 序列化或反序列化包含对象时，指示公共字段或属性表示 XML 元素。 <br />&nbsp;&nbsp;&nbsp; <font color="#0000ff">XmlElementAttributes</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 表示 XmlElementAttribute 的集合，XmlSerializer 将其用于它重写序列化类的默认方式。 <br />&nbsp;&nbsp;&nbsp; <font color="#0000ff">XmlEnumAttribute</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 控制 XmlSerializer 如何序列化枚举成员。 <br />&nbsp;&nbsp;&nbsp; <font color="#0000ff">XmlIgnoreAttribute</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 指示 XmlSerializer 的 Serialize 方法不序列化公共字段或公共读/写属性值。 <br />&nbsp;&nbsp;&nbsp; <font color="#0000ff">XmlIncludeAttribute</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 允许 XmlSerializer 在它序列化或反序列化对象时识别类型。 <br />&nbsp;&nbsp;&nbsp; XmlRootAttribute&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 控制视为 XML 根元素的属性目标的 XML 序列化。 <br />&nbsp;&nbsp;&nbsp; XmlTextAttribute&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 当序列化或反序列化包含类时，向 XmlSerializer 指示应将此成员作为 XML 文本处理。 <br />&nbsp;&nbsp;&nbsp; XmlTypeAttribute&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 控制当属性目标由 XmlSerializer 序列化时生成的 XML 架构。 <br />&nbsp;&nbsp;&nbsp; XmlAnyAttributeAttribute&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 指定成员（返回 XmlAttribute 对象的数组的字段）可以包含任何 XML 属性。 <br />&nbsp;&nbsp;&nbsp; XmlAnyElementAttribute&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 指定成员（返回 XmlElement 或 XmlNode 对象的数组的字段）可以包含对象，该对象表示在序列化或反序列化的对象中没有相应成员的所有 XML 元素。 <br />&nbsp;&nbsp;&nbsp; XmlAnyElementAttributes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 表示 XmlAnyElementAttribute 对象的集合。 <br />&nbsp;&nbsp;&nbsp; XmlAttributeEventArgs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 为 UnknownAttribute 事件提供数据。 <br />&nbsp;&nbsp;&nbsp; XmlAttributeOverrides&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 允许您在使用 XmlSerializer 序列化或反序列化对象时重写属性、字段和类特性。 <br />&nbsp;&nbsp;&nbsp; XmlElementEventArgs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 为 UnknownElement 事件提供数据。 <br />&nbsp;&nbsp;&nbsp; XmlNamespaceDeclarationsAttribute 指定目标属性、参数、返回值或类成员包含与 XML 文档中所用命名空间关联的前缀。 <br />&nbsp;&nbsp;&nbsp; XmlNodeEventArgs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 为 UnknownNode 事件提供数据。 <br />&nbsp;&nbsp;&nbsp; XmlSerializer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 将对象序列化到 XML 文档中和从 XML 文档中反序列化对象。XmlSerializer 使您得以控制如何将对象编码到 XML 中。 <br />&nbsp;&nbsp;&nbsp; XmlSerializerNamespaces&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 包含 XmlSerializer 用于在 XML 文档实例中生成限定名的 XML 命名空间和前缀。 <br />&nbsp;&nbsp;&nbsp; XmlTypeMapping&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 包含从一种类型到另一种类型的映射。 </p>
<p><br /><font color="#800000"><strong>XML序列化答疑，很重要：</strong></font><br />&nbsp;&nbsp;&nbsp; （1）需序列化的字段必须是公共的(public)<br />&nbsp;&nbsp;&nbsp; （2）需要序列化的类都必须有一个无参的构造函数<br />&nbsp;&nbsp;&nbsp; （3）枚举变量可序列化为字符串，无需用[XmlInclude]<br />&nbsp;&nbsp;&nbsp; （4）导出非基本类型对象，都必须用[XmlInclude]事先声明。该规则递归作用到子元素<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如导出ArrayList对象，若其成员是自定义的，需预包含处理：<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; using System.Xml.Serialization;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [XmlInclude(typeof(自定义类))]<br />&nbsp;&nbsp;&nbsp; （5）Attribute中的IsNullable参数若等于false，表示若元素为null则不显示该元素。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 也就是说：针对值类型（如结构体）该功能是实效的<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 若数组包含了100个空间，填充了10个类对象，则序列化后只显示10个节点<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 若数组包含了100个空间，填充了10个结构体对象，则序列化后会显示100个节点<br />&nbsp;&nbsp;&nbsp; （6）真正无法XML序列化的情况<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 某些类就是无法XML序列化的（即使使用了[XmlInclude]）<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IDictionary（如HashTable）<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.Drawing.Color<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.Drawing.Font<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SecurityAttribute声明<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 父类对象赋予子类对象值的情况<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 对象间循环引用<br />&nbsp;&nbsp;&nbsp; （7）对于无法XML序列化的对象，可考虑<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 使用自定义xml序列化（实现IXmlSerializable接口）<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 实现IDictionary的类，可考虑（1）用其它集合类替代；（2）用类封装之，并提供Add和this函数<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 某些类型需要先经过转换，然后才能序列化为 XML。如XML序列化System.Drawing.Color，可先用ToArgb()将其转换为整数 <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 过于复杂的对象用xml序列化不便的话，可考虑用二进制序列化 </p>
<p><br /><font color="#333399"><strong>序列化中异常的扑捉：</strong></font><br />&nbsp;&nbsp;&nbsp; 使用Exception.Message只会得到简单的信息&ldquo;行***错误&quot;<br />&nbsp;&nbsp;&nbsp; 可以使用Exception.InnerException.Message得到更详尽的信息 </p>
<p><strong>可使用事件代理来处理解析不了的XML节点：</strong><br />&nbsp;&nbsp;&nbsp; <font color="#993300">XmlSerializer serializer = new XmlSerializer(typeof(PurchaseOrder));<br />&nbsp;&nbsp;&nbsp; serializer.UnknownNode+= new XmlNodeEventHandler(serializer_UnknownNode);<br />&nbsp;&nbsp;&nbsp; serializer.UnknownAttribute+= new&nbsp; XmlAttributeEventHandler(serializer_UnknownAttribute);<br />&nbsp;&nbsp;&nbsp; protected void serializer_UnknownNode(object sender, XmlNodeEventArgs e)<br />&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Console.WriteLine(&quot;Unknown Node:&quot; +&nbsp;&nbsp; e.Name + &quot;\t&quot; + e.Text);<br />&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; protected void serializer_UnknownAttribute(object sender, XmlAttributeEventArgs e)<br />&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.Xml.XmlAttribute attr = e.Attr;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Console.WriteLine(&quot;Unknown attribute &quot; +&nbsp; attr.Name + &quot;='&quot; + attr.Value + &quot;'&quot;);<br />&nbsp;&nbsp;&nbsp; } </font></p>
<p>集合类(IEnumerable, ICollection)必须满足下列规则才可XML序列化：<br />&nbsp;&nbsp;&nbsp; - 不得实现 IDictionary。<br />&nbsp;&nbsp;&nbsp; - 必须有一个 Add 方法，该方法不是由该接口定义的，因为它通常是为该集合将要容纳的专用类型而创建的<br />&nbsp;&nbsp;&nbsp; - 必须有一个索引器, 且参数为 System.Int32 (C# int)<br />&nbsp;&nbsp;&nbsp; - 在 Add、Count 和索引器中不能有任何安全特性（SecurityAttribute）<br />&nbsp;&nbsp;&nbsp; 可序列化集合类例程：<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public class PublisherCollection : CollectionBase<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public int Add(Publisher value)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return base.InnerList.Add(value);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public Publisher this[int idx]<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get { return (Publisher) base.InnerList[idx]; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set { base.InnerList[idx] = value; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } </p>
<p><br />某些类是以程序集的形式提供的，无法修改其源码。可用XmlAttributeOverrides设置其序列化特性<br />&nbsp;&nbsp;&nbsp;&nbsp; XML目标<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Inventory xmlns:xsd=&quot;<a href="http://www.w3.org/2001/XMLSchema"><font color="#8d8c8c">http://www.w3.org/2001/XMLSchema</font></a>&quot; xmlns:xsi=&quot;<a href="http://www.w3.org/2001/XMLSchema-instance"><font color="#8d8c8c">http://www.w3.org/2001/XMLSchema-instance</font></a>&quot;&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Product&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ProductID&gt;100&lt;/ProductID&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ProductName&gt;Product Thing&lt;/ProductName&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;SupplierID&gt;10&lt;/SupplierID&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/Product&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Book&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ProductID&gt;101&lt;/ProductID&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ProductName&gt;How to Use Your New Product Thing&lt;/ProductName&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;SupplierID&gt;10&lt;/SupplierID&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ISBN&gt;123456789&lt;/ISBN&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/Book&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/Inventory&gt;<br />&nbsp;&nbsp;&nbsp; 源类（无法修改）<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public class Inventory<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private Product[] stuff;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public Inventory() {}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public Product[] InventoryItems {get {return stuff;} set {stuff=value;}}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; 附加XmlAttributeOverrides后即可序列化<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; XmlAttributes attrs = new XmlAttributes();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; attrs.XmlElements.Add(new XmlElementAttribute(&quot;Book&quot;, typeof(BookProduct)));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; attrs.XmlElements.Add(new XmlElementAttribute(&quot;Product&quot;, typeof(Product)));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //add to the Attributes collection<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; XmlAttributeOverrides attrOver = new XmlAttributeOverrides();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; attrOver.Add(typeof(Inventory), &quot;InventoryItems&quot;, attrs);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //deserialize and load data into the listbox from deserialized object<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FileStream f=new FileStream(&quot;..\\..\\..\\inventory.xml&quot;,FileMode.Open);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; XmlSerializer newSr=new XmlSerializer(typeof(Inventory), attrOver);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Inventory newInv = (Inventory)newSr.Deserialize(f); </p>
<p>&nbsp; </p>
<p><font color="#0000ff">------------------------------------------------------------------------------------<br />最简单的示例<br />-------------------------------------------------------------------------------------</font><br />类设计<br />&nbsp;&nbsp;&nbsp; public class MyClass&nbsp; {public MyObject MyObjectProperty;}<br />&nbsp;&nbsp;&nbsp; public class MyObject {public string ObjectName;} </p>
<p>序列化的 XML：<br />&nbsp;&nbsp;&nbsp; &lt;MyClass&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;MyObjectProperty&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Objectname&gt;My String&lt;/ObjectName&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/MyObjectProperty&gt;<br />&nbsp;&nbsp;&nbsp; &lt;/MyClass&gt; </p>
<p><br />&nbsp; <br /><font color="#0000ff">------------------------------------------------------------------------------------<br />示例: 序列化数组，并限制数组元素类型<br />-------------------------------------------------------------------------------------</font><br />类设计<br />&nbsp;&nbsp;&nbsp; public class Things<br />&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [XmlElement(DataType = typeof(string)), XmlElement(DataType = typeof(int))]<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public object[] StringsAndInts;<br />&nbsp;&nbsp;&nbsp; } </p>
<p>生成的 XML 可能为：<br />&nbsp;&nbsp;&nbsp; &lt;Things&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;string&gt;Hello&lt;/string&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;int&gt;999&lt;/int&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;string&gt;World&lt;/string&gt;<br />&nbsp;&nbsp;&nbsp; &lt;/Things&gt; </p>
<p>&nbsp; </p>
<p><font color="#0000ff">-------------------------------------------------------------------------------------<br />示例: 序列化数组<br />-------------------------------------------------------------------------------------</font><br />类设计<br />&nbsp;&nbsp;&nbsp; using System.Xml.Serialization;<br />&nbsp;&nbsp;&nbsp; [XmlRootAttribute(&quot;LinkLibrary&quot;, IsNullable = false, Namespace=&quot;<a href="http://www.wztelecom.cn/"><font color="#8d8c8c">http://www.wztelecom.cn</font></a>&quot;)]<br />&nbsp;&nbsp;&nbsp; public class LinkLib<br />&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [XmlElementAttribute(ElementName=&quot;Link&quot;, IsNullable=false)]<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public Link[] Links;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public LinkLib()<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Links = new Link[50];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Links[0] = new Link(&quot;aa&quot;, &quot;aa&quot;, &quot;aa&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Links[1] = new Link(&quot;bb&quot;, &quot;aa&quot;, &quot;aa&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Links[2] = new Link(&quot;cc&quot;, &quot;aa&quot;, &quot;aa&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Links[3] = new Link(&quot;aa&quot;, &quot;aa&quot;, &quot;aa&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Links[4] = new Link(&quot;aa&quot;, &quot;aa&quot;, &quot;aa&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Links[5] = new Link(&quot;aa&quot;, &quot;aa&quot;, &quot;aa&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Links[6] = new Link(&quot;aa&quot;, &quot;aa&quot;, &quot;aa&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Links[7] = new Link(&quot;aa&quot;, &quot;aa&quot;, &quot;aa&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Links[8] = new Link(&quot;aa&quot;, &quot;aa&quot;, &quot;aa&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Links[9] = new Link(&quot;aa&quot;, &quot;aa&quot;, &quot;aa&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; public class Link<br />&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [XmlAttribute(&quot;Cat&quot;)] public string Cat;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [XmlAttribute(&quot;Url&quot;)] public string Url;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [XmlAttribute(&quot;Desc&quot;)]public string Desc;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public Link(){}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public Link(string cat, string url, string desc)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Cat = cat;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Url = url;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Desc = desc;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; } </p>
<p>目标XML文件<br />&nbsp;&nbsp;&nbsp; &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;<br />&nbsp;&nbsp;&nbsp; &lt;LinkLibrary xmlns:xsd=&quot;<a href="http://www.w3.org/2001/XMLSchema"><font color="#8d8c8c">http://www.w3.org/2001/XMLSchema</font></a>&quot; xmlns:xsi=&quot;<a href="http://www.w3.org/2001/XMLSchema-instance"><font color="#8d8c8c">http://www.w3.org/2001/XMLSchema-instance</font></a>&quot;&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Link Cat=&quot;aa&quot; Url=&quot;aa&quot; Desc=&quot;aa&quot; /&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Link Cat=&quot;bb&quot; Url=&quot;aa&quot; Desc=&quot;aa&quot; /&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Link Cat=&quot;cc&quot; Url=&quot;aa&quot; Desc=&quot;aa&quot; /&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Link Cat=&quot;aa&quot; Url=&quot;aa&quot; Desc=&quot;aa&quot; /&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Link Cat=&quot;aa&quot; Url=&quot;aa&quot; Desc=&quot;aa&quot; /&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Link Cat=&quot;aa&quot; Url=&quot;aa&quot; Desc=&quot;aa&quot; /&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Link Cat=&quot;aa&quot; Url=&quot;aa&quot; Desc=&quot;aa&quot; /&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Link Cat=&quot;aa&quot; Url=&quot;aa&quot; Desc=&quot;aa&quot; /&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Link Cat=&quot;aa&quot; Url=&quot;aa&quot; Desc=&quot;aa&quot; /&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Link Cat=&quot;aa&quot; Url=&quot;aa&quot; Desc=&quot;aa&quot; /&gt;<br />&nbsp;&nbsp;&nbsp; &lt;/LinkLibrary&gt; </p>
<p>若使用[XmlArrayAttribute(&quot;Links&quot;)] public Link[] Links;则序列化后的xml文件会多出一层：<br />&nbsp;&nbsp;&nbsp; &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;<br />&nbsp;&nbsp;&nbsp; &lt;LinkLibrary xmlns:xsd=&quot;<a href="http://www.w3.org/2001/XMLSchema"><font color="#8d8c8c">http://www.w3.org/2001/XMLSchema</font></a>&quot; xmlns:xsi=&quot;<a href="http://www.w3.org/2001/XMLSchema-instance"><font color="#8d8c8c">http://www.w3.org/2001/XMLSchema-instance</font></a>&quot;&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Links&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Link Cat=&quot;aa&quot; Url=&quot;aa&quot; Desc=&quot;aa&quot; /&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Link Cat=&quot;bb&quot; Url=&quot;aa&quot; Desc=&quot;aa&quot; /&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Link Cat=&quot;cc&quot; Url=&quot;aa&quot; Desc=&quot;aa&quot; /&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Link Cat=&quot;aa&quot; Url=&quot;aa&quot; Desc=&quot;aa&quot; /&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Link Cat=&quot;aa&quot; Url=&quot;aa&quot; Desc=&quot;aa&quot; /&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Link Cat=&quot;aa&quot; Url=&quot;aa&quot; Desc=&quot;aa&quot; /&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Link Cat=&quot;aa&quot; Url=&quot;aa&quot; Desc=&quot;aa&quot; /&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Link Cat=&quot;aa&quot; Url=&quot;aa&quot; Desc=&quot;aa&quot; /&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Link Cat=&quot;aa&quot; Url=&quot;aa&quot; Desc=&quot;aa&quot; /&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Link Cat=&quot;aa&quot; Url=&quot;aa&quot; Desc=&quot;aa&quot; /&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/Links&gt;<br />&nbsp;&nbsp;&nbsp; &lt;/LinkLibrary&gt; </p>
<p>&nbsp; </p>
<p><font color="#0000ff">-------------------------------------------------------------------------------------<br />示例：使用自定义序列化序列化Dictionary对象<br />-------------------------------------------------------------------------------------</font><br />XML目标<br />&nbsp;&nbsp;&nbsp; &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;<br />&nbsp;&nbsp;&nbsp; &lt;FactTableDef&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Name&gt;FactTableDef1&lt;/Name&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Owner&gt;owner1&lt;/Owner&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;SourceTable&gt;sourceTable1&lt;/SourceTable&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ColumnMeasureMaps&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Map Column=&quot;column1&quot; Measure=&quot;Measure1&quot; /&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Map Column=&quot;column2&quot; Measure=&quot;Measure2&quot; /&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Map Column=&quot;column3&quot; Measure=&quot;Measure3&quot; /&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/ColumnMeasureMaps&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ColumnDimensionMaps&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Map Column=&quot;column4&quot; Dimension=&quot;Dimension4&quot; /&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Map Column=&quot;column5&quot; Dimension=&quot;Dimension5&quot; /&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Map Column=&quot;column6&quot; Dimension=&quot;Dimension6&quot; /&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/ColumnDimensionMaps&gt;<br />&nbsp;&nbsp;&nbsp; &lt;/FactTableDef&gt; </p>
<p>类源码<br />&nbsp;&nbsp;&nbsp; using System;<br />&nbsp;&nbsp;&nbsp; using System.Collections.Generic;<br />&nbsp;&nbsp;&nbsp; using System.Text;<br />&nbsp;&nbsp;&nbsp; using System.Runtime.Serialization;<br />&nbsp;&nbsp;&nbsp; using System.Xml;<br />&nbsp;&nbsp;&nbsp; using System.Xml.Serialization; </p>
<p>&nbsp;&nbsp;&nbsp; namespace WZDM.OLAP<br />&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [System.Serializable()]<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [XmlInclude(typeof(FactTableDef))]<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public class FactTableDef : System.Xml.Serialization.IXmlSerializable<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public string Name;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 名称<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public string Owner;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 事实表属主<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public string SourceTable;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 源表<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public Dictionary&lt;string, string&gt; ColumnMeasureMaps;&nbsp;&nbsp; // 字段和量度对应关系<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public Dictionary&lt;string, string&gt; ColumnDimensionMaps; // 字段和维度对应关系<br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public FactTableDef() { }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...<br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void WriteXml(System.Xml.XmlWriter writer)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; writer.WriteElementString(&quot;Name&quot;, this.Name);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; writer.WriteElementString(&quot;Owner&quot;, this.Owner);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; writer.WriteElementString(&quot;SourceTable&quot;, this.SourceTable);<br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // ColumnMeasureMaps<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; writer.WriteStartElement(&quot;ColumnMeasureMaps&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; foreach (string key in this.ColumnMeasureMaps.Keys)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; writer.WriteStartElement(&quot;Map&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; writer.WriteAttributeString(&quot;Column&quot;, key);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; writer.WriteAttributeString(&quot;Measure&quot;, ColumnMeasureMaps[key]);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; writer.WriteEndElement();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; writer.WriteEndElement();<br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // ColumnDimensionMaps<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; writer.WriteStartElement(&quot;ColumnDimensionMaps&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; foreach (string key in this.ColumnDimensionMaps.Keys)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; writer.WriteStartElement(&quot;Map&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; writer.WriteAttributeString(&quot;Column&quot;, key);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; writer.WriteAttributeString(&quot;Dimension&quot;, ColumnDimensionMaps[key]);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; writer.WriteEndElement();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; writer.WriteEndElement();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void&nbsp; ReadXml(System.Xml.XmlReader reader)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; reader.Read();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.Name = reader.ReadElementString(&quot;Name&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.Owner = reader.ReadElementString(&quot;Owner&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.SourceTable = reader.ReadElementString(&quot;SourceTable&quot;);<br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // ColumnMeasureMaps<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ColumnMeasureMaps = new Dictionary&lt;string, string&gt;();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; reader.ReadStartElement(&quot;ColumnMeasureMaps&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; reader.ReadToDescendant(&quot;Map&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; do <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string key = reader.GetAttribute(&quot;Column&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string item = reader.GetAttribute(&quot;Measure&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ColumnMeasureMaps.Add(key, item);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }while (reader.ReadToNextSibling(&quot;Map&quot;));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; reader.ReadEndElement();<br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // ColumnDimensionMaps<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ColumnDimensionMaps = new Dictionary&lt;string, string&gt;();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; reader.ReadStartElement(&quot;ColumnDimensionMaps&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; reader.ReadToDescendant(&quot;Map&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; do<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string key = reader.GetAttribute(&quot;Column&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string item = reader.GetAttribute(&quot;Dimension&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ColumnDimensionMaps.Add(key, item);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } while (reader.ReadToNextSibling(&quot;Map&quot;));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; reader.ReadEndElement();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; }</p>]]></description>
		</item>
		
			<item>
			<link>http://www.techmango.com/default.asp?id=620</link>
			<title><![CDATA[什么是金融衍生产品？]]></title>
			<author>jimmysu_88@163.com(techmango)</author>
			<category><![CDATA[商业|金融理财]]></category>
			<pubDate>Mon,17 Nov 2008 23:13:27 +0800</pubDate>
			<guid>http://www.techmango.com/default.asp?id=620</guid>	
		<description><![CDATA[<p><strong>金融衍生产品</strong><font color="#0000ff">是一种金融工具，其价值和其他证券&mdash;&mdash;如股票或债券&mdash;&mdash;联系在一起，或者来自于其他证券。举例而言，你可以买IBM股票，也可以买IBM股票的期权。期权赋予你在一定时间以一定价格购买IBM股票的权利。买入期权是一种衍生工具，因为它的价值是从相关股票中&ldquo;衍生&rdquo;出来的。当IBM股票的价格上升时，其买入期权的价值也上升，反之亦然。<br /></font></p>
<p>大多数金融教科书都会告诉你衍生产品只有两种：期权和远期合同（期货）．</p>
<p>　　期权赋予持有人在未来时间买或卖的权利，分别叫做&ldquo;买入期权&rdquo;和&ldquo;卖出期权&rdquo;。如果你得知一个月后经销商那里会有一批新的柯维特跑车到货，你可以立即付给他1 000美元，给你自己预订一辆，并约定到货后以固定价格购买&mdash;&mdash;比如说4万美元。这样，当车运到后你就有了一个买入期权。你有权利&mdash;&mdash;而不是义务&mdash;&mdash;以4万美元购入一辆车。因为有了这样一个买入期权，你自然希望新到跑车的价格上升：如果车价上涨到5万美元，以4万美元买车的权利就值差不多1万美元。而且，有了这样的期权，你的损失也是有限度的。如果车价只有3万美元，你可以不要那1 000美元（专业上称为&ldquo;期权费&rdquo;），直接花3万美元买车。<br /><br />　　另一种衍生工具&mdash;&mdash;远期合同是在未来时间买或卖的义务。这些合同在交易所交易时被称为&ldquo;期货&rdquo;，名称不同，但原理相同。假定你想买一辆新柯维特跑车，又不想付1 000美元的期权费，你可以选择签订一个远期合同，同意在一个月后以4万美元购买一辆跑车。车运到后，即使实际定价低于4万美元，你也必须以合同价格购买。和持有买入期权一样，你希望车价上涨。但因为你签订的是远期合同，你的损失不再是有限度的了，所以，你尤其不希望车价下跌。就算车价跌到3万，你还是要按4万的价格来买。尽管存在风险，远期合同和期权相比，至少有一个优点&mdash;&mdash;你可以省下1 000美元的期权费。<br /></p>]]></description>
		</item>
		
			<item>
			<link>http://www.techmango.com/default.asp?id=619</link>
			<title><![CDATA[为偶的TYTN II升级了系统]]></title>
			<author>jimmysu_88@163.com(techmango)</author>
			<category><![CDATA[生活|个人日记]]></category>
			<pubDate>Sun,16 Nov 2008 14:33:09 +0800</pubDate>
			<guid>http://www.techmango.com/default.asp?id=619</guid>	
		<description><![CDATA[<p>一个月前，从香港买回了一台<strong>HTC TYTN II,</strong>但总感觉用得不是很爽，繁体版的，只有台湾和香港人用的输入法，而且有时候开程序会有点卡卡的．</p>
<p>平时有空就拿它来研究一下，终于知道它能安装第三方的输入，于是找了点讯梅花输入，这是个很不错的手机输入法，有普通拼音，联想拼音，五笔等输入，小凯撒能很好地兼容它．</p>
<p>今天我有空在网逛的时候，看到<strong>HTC</strong>主页上的软件更新区发现有windows mobile 6.1的更新，许多论坛早就有这消息了，说这是简体中文的系统，于是我高兴地下载来安装到小凯撒上了．</p>
<p>令人失望的是，它根本就没有简体中文语言呀，就只是系统的升级程序呀．不过，这次的系统升级还是有所收获的，手机系统里的图标更加好看了，有性能上的提高，现在的小凯撒用起来，轻快了许多！<img alt="" src="http://www.techmango.com//blog/fckeditor/editor/images/smiley/msn/regular_smile.gif" /></p>]]></description>
		</item>
		
			<item>
			<link>http://www.techmango.com/default.asp?id=599</link>
			<title><![CDATA[终于打通了《英雄传说6-空之轨迹3rd》]]></title>
			<author>jimmysu_88@163.com(techmango)</author>
			<category><![CDATA[游戏|PSP领域]]></category>
			<pubDate>Sat,15 Nov 2008 14:33:49 +0800</pubDate>
			<guid>http://www.techmango.com/default.asp?id=599</guid>	
		<description><![CDATA[<p><strong>今天终于玩通了PSP版的《英雄传说6-空之轨迹3rd》,完成了一个任务,心里觉得轻松不少哈.[<a href="http://www.techmango.com/blog/article.asp?id=598">请看在本站的相关资料介绍</a>]</strong></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;感觉PSP的普通难度要比PC的要简单得多.为了打最终Boss,我练到了平均每个人物142级,但最后发现用这样的等级打Boss真的好轻松,只要防得好的话,不需要复活.但是话说回来,打主线Boss的队员的等级练得再高,没有法宝&quot;<strong>刻耀珠</strong>&quot;(就是时属性的驱动3啊,放魔法飞快!)和完全防御类的魔法也是非常难过的啊!<img alt="" src="http://www.techmango.com//blog/fckeditor/editor/images/smiley/msn/sad_smile.gif" />. </p>
<p>本人用角色&quot;莉丝&quot;配戴上<font color="#993300"><strong>&quot;谍报&quot;,&quot;银耀珠&quot;,&quot;琥耀珠&quot;,&quot;金耀珠&quot;,&quot;木耀珠&quot;,&quot;刻耀珠&quot;,&quot;苍耀珠&quot;,</strong></font>终于调制出了超级完全防御系的魔法!!!:</p>
<p><strong><font color="#0000ff"><font color="#000000">1.</font> [大地之障] - 单体完全防御</font></strong></p>
<p><strong><font color="#0000ff"><font color="#000000">2.</font> [大地之墙] - 小圆完全防御</font></strong></p>
<p><strong><font color="#0000ff"><font color="#000000">3.</font> [盖亚之盾] - 全体完全防御 牛!不用怕物理达人Boss了<img alt="" src="http://www.techmango.com//blog/fckeditor/editor/images/smiley/msn/omg_smile.gif" /></font></strong></p>
<p><strong><font color="#0000ff"><font color="#000000">4.</font> [根源屏障] - 全体除回复魔法以外无效化 更牛,不管多么狠的Boss的魔法都不顶用哈<img alt="" src="http://www.techmango.com//blog/fckeditor/editor/images/smiley/msn/tounge_smile.gif" /></font></strong></p>
<p>当然还得需要最大限度地加快魔法的驱动速度,那就是&quot;<strong>刻耀珠</strong>&quot;,无论再复杂强大的魔法都无需等待就能释放出来!</p>
<p>这里要感叹一下,最终Boss那招魔法&quot;毁灭星球&quot;, 竟然能将平均防御力是2200再加成25%防御力,生命平均是2800的四个队员打得真是&quot;灰飞烟灭&quot;!全挂了.有了上述的两个条件, 无视Boss.</p>
<p>最后,列出我用来挑战最终Boss的四个队员,他们是:</p>
<p>1. 凯文 2.莉丝 3.玲 4. 约修亚</p>
<p><img alt="" src="http://www.techmango.com//blog/fckeditor/editor/images/smiley/msn/teeth_smile.gif" /></p>]]></description>
		</item>
		
			<item>
			<link>http://www.techmango.com/default.asp?id=618</link>
			<title><![CDATA[解决multiple items sel&#101;cted in a Dro&#112;Down]]></title>
			<author>jimmysu_88@163.com(techmango)</author>
			<category><![CDATA[软件|.NET技术]]></category>
			<pubDate>Thu,13 Nov 2008 10:11:55 +0800</pubDate>
			<guid>http://www.techmango.com/default.asp?id=618</guid>	
		<description><![CDATA[<p><strong><font color="#993300">ASP.NET有一个神奇的Bug，如果你不用以下方法来设置选定值，它就很有可能抛出错误：</font><font color="#ff0000">Cannot have multiple items selected in a DropDownList</font></strong></p>
<p><font color="#0000ff">public</font> void SetSelectValue4DropDownList(<font color="#0000ff">string</font> valueSelected, <font color="#339966">DropDownList</font> dd)<br />&nbsp;&nbsp;{</p>
<p><font color="#cc99ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#993366">&nbsp;</font><strong><font color="#993366">ListItem li = dd.Items.FindByValue(valueSelected);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (li != null)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dd.ClearSelection();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int index = dd.SelectedIndex = dd.Items.IndexOf(li);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dd.SelectedIndex = index;</font><br /></strong>&nbsp;&nbsp;&nbsp;&nbsp; <strong><font color="#800080">&nbsp;}</font><br /></strong></font>&nbsp;&nbsp;}</p>
<p>一般我们在为DropDownlist绑定数据源的时候，DropDownlist都默认选择第一个Item，使它被选中，如果想另外从数据库取得某一数值，使其选中相应的Item，那么就会出现多重选中的情况<font color="#ff0000"><strong>multiple items selected in a DropDownList</strong></font><font color="#000000">，这么想是很有道理，但是不知道为什么在某些情况下，这种异常却不会出现。即使你用了上述的方法，还是会有不work的情况，这是因为：</font></p>
<p>在某个静态类中，有定义一个这样的对象，<em>ListItem common = new ListItem(&quot;--&quot;,&quot;&quot;) </em>，然后被某个页面的多个DropDownlist使用（例如insert到第一个位置），这样，有时，<font color="#993300"><strong>ASP.NET</strong></font><font color="#000000">，就会认为某中的一个DropDownlist已经选中了第一个选项，而后又选中另外一个Item，这时同时会出现这个神奇的异常！（神奇就在于，各别DropDownlist不会出错<img alt="" src="http://www.techmango.com/blog/fckeditor/editor/images/smiley/msn/sad_smile.gif" />）解决的办法就尽量不要共用ListItem，插入Item最后New一个。</font></p>]]></description>
		</item>
		
			<item>
			<link>http://www.techmango.com/default.asp?id=612</link>
			<title><![CDATA[如何修改你的MSN密码？]]></title>
			<author>jimmysu_88@163.com(techmango)</author>
			<category><![CDATA[生活|网络百科]]></category>
			<pubDate>Wed,12 Nov 2008 20:10:33 +0800</pubDate>
			<guid>http://www.techmango.com/default.asp?id=612</guid>	
		<description><![CDATA[很多朋友平时不太会注意MSN是在哪里修改密码，一般都会认为是在软件里的某个地方修改就可以了。其实修改是在MSN的主页里，呵呵~~<br/><br/>1.直接登录：<a href="https://account.live.com/" target="_blank">https://account.live.com/</a> (推荐)<br/><br/>2.通过MSN进入的详细办法：<br/><br/>登录<a href="http://www.msn.com/" target="_blank">http://www.msn.com/</a><br/><br/>在的图标下面是频道列表，再下面是MSN 服务里面有一项叫MSN 客户服务。点击后会弹出一个页面，在这个图标下面你会找到“重新设置密码”，页面会变成一个白色的问题和回答。这是一个MS解答用户的页面，在这个页面下边更改密码才是我们的需要的。<br/><br/>单击后会进入另一个问题就是更改密码。这样我们可以通过点击“1.登录帐户服务。”等待一会，输入你的用户名(Email)和密码就可以进入了。登录成功后点击更改密码就可以修改密码。<br/>]]></description>
		</item>
		
			<item>
			<link>http://www.techmango.com/default.asp?id=613</link>
			<title><![CDATA[PDA与PPC的关系]]></title>
			<author>jimmysu_88@163.com(techmango)</author>
			<category><![CDATA[生活|网络百科]]></category>
			<pubDate>Tue,11 Nov 2008 12:38:03 +0800</pubDate>
			<guid>http://www.techmango.com/default.asp?id=613</guid>	
		<description><![CDATA[<p>我们都能常常听说PDA，就是掌上电脑，但问起PPC就没有多少人知道了。其实，</p>
<p><strong>PDA(Personal&nbsp;digital&nbsp;assistant),是一部掌上电脑，基本结构类似电脑，是一个手持式消费类产品。是微软定义的一种PDA架构。有特定的软件和硬件架构。现在的PDA大部分是PPC了。</strong></p>
<p><strong>PPC就是Pocket&nbsp;PC（简称PPC）是基于微软的windows&nbsp;CE,Windows&nbsp;Mobile操作系统的一种掌上电脑。</strong></p>
<p>PDA的操作系统大概分为两种，就是PALM和windows&nbsp;CE，拿台式电脑来打比方，就相当于LINIX和WINDOWS的差别。&nbsp;<br /><br /><br />PALM是奔迈公司的操作系统：&nbsp;<br /><a href="http://www.palm.com/cn/" target="_blank">http://www.palm.com/cn/</a>&nbsp;<br /><br />现在一般的PDA都具有手写功能！一部分有PDA功能的手机被称为SMARTPHONE（聪明的手机）就是因为它们已经具备了简单的电脑使用功能！&nbsp;<br /></p>]]></description>
		</item>
		
			<item>
			<link>http://www.techmango.com/default.asp?id=615</link>
			<title><![CDATA[DOS命令之XCOPY详解]]></title>
			<author>jimmysu_88@163.com(techmango)</author>
			<category><![CDATA[生活|网络百科]]></category>
			<pubDate>Mon,10 Nov 2008 12:49:03 +0800</pubDate>
			<guid>http://www.techmango.com/default.asp?id=615</guid>	
		<description><![CDATA[<p><strong><font color="#800080">由于经常需要把更新了的页面和DLL更新到美国那边的服务上，而网络连接又比较慢，经常在windows界面上操作会导致explorer窗口出现连带停滞现象，所以我想到了用命令行操作，现在使用XCOPY命令就解决了这头痛的问题（写在脚本再运行很方便）。</font></strong></p>
<p><strong>XCOPY source [destination] [/A | /M] [/D[:date]] [/P] [/S [/E]] [/V] [/W]<br /><br />　　　　　　　　　　　　　 [/C] [/I] [/Q] [/F] [/L] [/G] [/H] [/R] [/T] [/U] <br />　　　　　　　　　　　　　 [/K] [/N] [/O] [/X] [/Y] [/-Y] [/Z] <br />　　　　　　　　　　　　　 [/EXCLUDE:file1[+file2][+file3]...]</strong> <br /><br />　<font color="#0000ff">source　　　 指定要复制的文件。 <br />　destination　指定新文件的位置和/或名称。 <br />　/A　　　　　 只复制有存档属性集的文件，但不改变属性。 <br />　/M　　　　　 只复制有存档属性集的文件，并关闭存档属性。 <br />　/D:m-d-y　　 复制在指定日期或指定日期以后改变的文件。 <br />　　　　　　　 如果没有提供日期，只复制那些源时间比目标时间新的文件。 <br />　/EXCLUDE:file1[+file2][+file3]... <br />　　　　　　　 指定含有字符串的文件列表。如果有任何字符串与要被复制的文件 <br />　　　　　　　 的绝对路径相符，那个文件将不会得到复制。 <br />　　　　　　　 例如，指定如 \obj\ 或 .obj 的字符串会排除目录 obj 下面的 <br />　　　　　　　 所有文件或带有 .obj 扩展名的文件。 <br />　/P　　　　　 创建每个目标文件前提示。 <br />　/S　　　　　 复制目录和子目录，除了空的。 <br />　/E　　　　　 复制目录和子目录，包括空的。与 /S /E 相同。可以用来修改 /T。 <br />　/V　　　　　 验证每个新文件的大小。 <br />　/W　　　　　 提示您在复制前按键。 <br />　/C　　　　　 即使有错误，也继续复制。 <br />　/I　　　　　 如果目标不存在，又在复制一个以上的文件，则假定目标一定是一 <br />　　　　　　　 个目录。 <br />　/Q　　　　　 复制时不显示文件名。 <br />　/F　　　　　 复制时显示完整的源和目标文件名。 <br />　/L　　　　　 显示要复制的文件。 <br />　/G　　　　　 允许将没有经过加密的文件复制到不支持加密的目标。 <br />　/H　　　　　 也复制隐藏和系统文件。 <br />　/R　　　　　 覆盖只读文件。 <br />　/T　　　　　 创建目录结构，但不复制文件。不包括空目录或子目录。/T /E 包 <br />　　　　　　　 括空目录和子目录。 <br />　/U　　　　　 只复制已经存在于目标中的文件。 <br />　/K　　　　　 复制属性。一般的 Xcopy 会重设只读属性。 <br />　/N　　　　　 用生成的短名复制。 <br />　/O　　　　　 复制文件所有权和 ACL 信息。 <br />　/X　　　　　 复制文件审核设置(隐含 /O)。 <br />　/Y　　　　　 禁止提示以确认覆盖一个现存目标文件。 <br />　/-Y　　　　　导致提示以确认覆盖一个现存目标文件。 <br />　/Z　　　　　 用重新启动模式复制网络文件。 <br /></font><br />命令行开关 /Y 可以预先在 COPYCMD 环境变量中设置。这可能被命令行上的 /-Y <br />覆盖。 <br /><br />========================================= <br /><br />Xcopy <br />复制文件和目录，包括子目录。 <br /><br />语法 <br />xcopySource [Destination] [/w] [/p] [/c] [/v] [/q] [/f] [/l] [/g] [/d[:MM-DD-YYYY]] [/u] [/i] [/s [/e]] [/t] [/k] [/r] [/h] [{/a | /m}] [/n] [/o] [/x] [/exclude:FileName1[+[FileName2]][+[FileName3]] [{/y | /-y}] [/z] <br /><br />参数 <br />Source <br /><br />必需。指定要复制的文件的位置和名称。该参数必须包含驱动器或路径。 <br /><br />Destination <br /><br />指定要复制的文件的目标。该参数可以包含驱动器号和冒号、目录名、文件名或者它们的组合。 <br /><br />/w <br /><br />在开始复制文件之前将显示以下消息并等待您的响应： <br /><br />Press any key to begin copying file(s) <br /><br />/p <br /><br />提示您确认是否要创建每个目标文件。 <br /><br />/c <br /><br />忽略错误。 <br /><br />/v <br /><br />在写入目标文件时验证每个文件，以确保目标文件与源文件完全相同。 <br /><br />/q <br /><br />禁止显示&ldquo;xcopy&rdquo;的消息。 <br /><br />/f <br /><br />复制时显示源文件名和目标文件名。 <br /><br />/l <br /><br />显示要复制的文件列表。 <br /><br />/g <br /><br />创建已解密的目标文件。 <br /><br />/d [:MM-DD-YYYY] <br /><br />只复制那些在指定日期或指定日期之后更改过的源文件。如果不包括&ldquo;MM-DD-YYYY&rdquo;值，&ldquo;xcopy&rdquo;会复制比现有&ldquo;Destination&rdquo;文件新的所有&ldquo;Source&rdquo;文件。该命令行选项使您可以更新更改过的文件。 <br /><br />/u <br /><br />只从&ldquo;Source&rdquo;复制&ldquo;Destination&rdquo;中已有的文件。 <br /><br />/i <br /><br />如果&ldquo;Source&rdquo;是一个目录或包含通配符，而&ldquo;Destination&rdquo;不存在，&ldquo;xcopy&rdquo;会假定&ldquo;destination&rdquo;指定目录名并创建一个新目录。然后，&ldquo;xcopy&rdquo;会将所有指定文件复制到新目录中。默认情况下，&ldquo;xcopy&rdquo;将提示您指定&ldquo;Destination&rdquo;是文件还是目录。 <br /><br />/s <br /><br />复制非空的目录和子目录。如果省略&ldquo;/s&rdquo;，则&ldquo;xcopy&rdquo;将在单个目录中工作。 <br /><br />/e <br /><br />复制所有子目录，包括空目录。将&ldquo;/e&rdquo;与&ldquo;/s&rdquo;和&ldquo;/t&rdquo;命令行选项一起使用。 <br /><br />/t <br /><br />只复制子目录结构（即目录树），不复制文件。要复制空目录，必须包含&ldquo;/e&rdquo;命令行选项。 <br /><br />/k <br /><br />复制文件，如果源文件具有只读属性，则在目标文件中保留该属性。默认情况下，&ldquo;xcopy&rdquo;将删除只读属性。 <br /><br />/r <br /><br />复制只读文件。 <br /><br />/h <br /><br />复制具有隐藏和系统文件属性的文件。默认情况下，&ldquo;xcopy&rdquo;不复制隐藏或系统文件。 <br /><br />/a <br /><br />只复制那些具有存档文件属性设置的源文件。&ldquo;/a&rdquo;不修改源文件的存档文件属性。有关如何通过使用&ldquo;attrib&rdquo;来设置存档文件属性的信息，请参阅&ldquo;相关主题&rdquo;。 <br /><br />/m <br /><br />复制具有存档文件属性设置的源文件。与&ldquo;/a&rdquo;不同，&ldquo;/m&rdquo;关闭在源中指定的文件的存档文件属性。有关如何通过使用&ldquo;attrib&rdquo;来设置存档文件属性的信息，请参阅&ldquo;相关主题&rdquo;。 <br /><br />/n <br /><br />使用 NTFS 短文件或目录名创建副本。将文件或目录从 NTFS 卷复制到 FAT 卷或者当目标文件系统需要 FAT 文件系统命名约定（即 8.3 字符）时，需要&ldquo;/n&rdquo;。目标文件系统可以是 FAT 或 NTFS。 <br /><br />/o <br /><br />复制文件所有权与随机访问控制列表 (DACL) 信息。 <br /><br />/x <br /><br />复制文件审核设置和系统访问控制列表 (SACL) 信息（包含&ldquo;/o&rdquo;）。 <br /><br />/exclude:FileName1[+[ FileName2]][+[FileName3]] <br /><br />指定包含字符串的文件列表。 <br /><br />/y <br /><br />禁止提示确认要覆盖已存在的目标文件。 <br /><br />/-y <br /><br />提示您确认要覆盖已存在的目标文件。 <br /><br />/z <br /><br />在可重启模式中通过网络复制。 <br /><br />/? <br /><br />在命令提示符显示帮助。 <br /><br />注释 <br />&bull; 使用&ldquo;/v&rdquo; <br /><br />Windows XP 和 Windows Server 2003 家族产品不使用该命令。只为了与现有的 MS-DOS 文件保持兼容性才包含此命令，但是因为其功能是自动实现的，所以在命令行使用时不起作用。 <br /><br />&bull; 使用&ldquo;/exclude&rdquo; <br /><br />在每个文件的单独一行中的列出每个字符串。如果列出的任何字符串与要复制的文件的绝对路径的任何部分匹配，就从复制进程排除该文件。例如，如果指定字符串 &quot;\Obj\&quot;，则会排除 Obj 目录下的所有文件。如果指定字符串 &quot;.obj&quot;，则排除具有 .obj 扩展名的所有文件。 <br /><br />&bull; 使用&ldquo;/z&rdquo; <br /><br />如果在复制过程中丢失连接（例如，如果用于连接的服务器脱机），复制过程将在重新建立连接后恢复。&ldquo;/z&rdquo;也显示每个文件完成的复制操作的百分比。 <br /><br />&bull; 在 COPYCMD 环境变量中使用&ldquo;/y&rdquo; <br /><br />可在 COPYCMD 环境变量中使用&ldquo;/y&rdquo;。在命令行上使用&ldquo;/-y&rdquo;可以覆盖该命令。默认情况下，会提示您覆盖，除非您从批处理脚本内运行&ldquo;copy&rdquo;。 <br /><br />&bull; 复制加密的文件 <br /><br />将加密文件复制到不支持 EFS 的卷会导致错误。应首先解密文件或将文件复制到支持 EFS 的卷中。 <br /><br />&bull; 追加文件 <br /><br />要追加文件，请指定单个目标文件，多个源文件（使用通配符或 file1+file2+file3 格式）。 <br /><br />&bull; &ldquo;Destination&rdquo;的默认值 <br /><br />如果省略&ldquo;Destination&rdquo;，则&ldquo;xcopy&rdquo;命令将文件复制到当前目录。 <br /><br />&bull; 指定&ldquo;Destination&rdquo;是文件还是目录 <br /><br />如果&ldquo;Destination&rdquo;不包含现有目录且不以反斜杠 (\) 结尾，会出现下列消息： <br /><br />Does destination specify a file name or directory name on the target (F = file, D = directory)? <br />如果要将一个或多个文件复制到一个文件，请按 F。如果要将一个或多个文件复制到一个目录，请按 D。 <br /><br />使用&ldquo;/i&rdquo;命令行选项可禁止显示该消息，从而导致&ldquo;xcopy&rdquo;认定在源是多个文件或一个目录的情况下，目标是一个目录。 <br /><br />&bull; 使用&ldquo;xcopy&rdquo;命令设置&ldquo;Destination&rdquo;文件的存档属性 <br /><br />&ldquo;xcopy&rdquo;命令创建具有存档属性设置的文件，无论源文件中是否设定了此属性。有关文件属性和&ldquo;attrib&rdquo;的详细信息，请参阅&ldquo;相关主题&rdquo;。 <br /><br />&bull; 比较&ldquo;xcopy&rdquo;和&ldquo;diskcopy&rdquo; <br /><br />如果磁盘的子目录中包含文件，要将其复制到具有不同格式的磁盘中，请使用&ldquo;xcopy&rdquo;命令，而不要使用&ldquo;diskcopy&rdquo;。因为&ldquo;diskcopy&rdquo;命令是一个磁道接一个磁道地复制磁盘，所以需要源磁盘和目标磁盘的格式必须相同。&ldquo;xcopy&rdquo;命令没有这个要求。通常情况下请使用&ldquo;xcopy&rdquo;，除非您需要完整的磁盘映像副本。 <br /><br />&bull; &ldquo;xcopy&rdquo;的退出代码 <br /><br />要处理&ldquo;xcopy&rdquo;返回的退出代码，请在批处理程序的&ldquo;if&rdquo;命令行上使用&ldquo;ErrorLevel&rdquo;参数。有关使用&ldquo;if&rdquo;处理退出码的批处理程序的示例，请参阅&ldquo;相关主题&rdquo;。下表列出每一个退出代码和描述。 <br /><br /><br />退出代码 描述 <br />0 <br />文件复制没有错误。 <br /><br />1 <br />没有找到要复制的文件。 <br /><br />2 <br />用户按 Ctrl+C 终止了&ldquo;xcopy&rdquo;。 <br /><br />4 <br />出现了初始化错误。没有足够的内存或磁盘空间，或命令行上输入了无效的驱动器名称或语法。 <br /><br />5 <br />出现了磁盘写入错误。 <br /><br /><br /><br />示例 <br />要从驱动器 A 将所有文件和子目录（包括所有空的子目录）复制到驱动器 B，请键入： <br /><br />xcopy a: b: /s /e <br /><br />要包含上一示例中的任何系统或隐藏文件，请按如下所示添加&ldquo;/h&rdquo;命令行选项： <br /><br />xcopy a: b: /s /e /h <br /><br />要使用 \Rawdata 目录中 1993 年 12 月 29 日后更改的文件更新 \Reports 目录中的文件，请键入： <br /><br />xcopy \rawdata \reports /d:12-29-1993 <br /><br />要更新上例中 \Reports 中存在的所有文件而不考虑日期，请键入： <br /><br />xcopy \rawdata \reports /u <br /><br />要获得前一个命令要复制的文件列表而不实际复制文件，请键入： <br /><br />xcopy \rawdata \reports /d:12-29-1993 /l &gt; xcopy.out <br /><br />文件 Xcopy.out 列出了要复制的所有文件。 <br /><br />要将 \Customer 目录及其所有子目录复制到网络驱动器 H: 上的目录 <a href="http://www.techmango.com/file://Public/Address">\\Public\Address</a>，保留只读属性，并在 H: 上创建新文件时对您做出提示，请键入： <br /><br />xcopy \customer h:\public\address /s /e /k /p <br /><br />要发出上一个命令，确保在 \Address 目录不存在时&ldquo;xcopy&rdquo;会创建该目录，并禁止显示创建新目录时出现的消息，请按如下所示添加&ldquo;/i&rdquo;命令行选项： <br /><br />xcopy \customer h:\public\address /s /e /k /p /i <br /><br />可以创建批处理程序执行&ldquo;xcopy&rdquo;操作，并且使用&ldquo;if&rdquo;批处理命令在发生错误时处理退出代码。例如，以下的批处理程序使用了可替换的&ldquo;xcopy&rdquo;源和目标参数： <br /><br />@echo off rem COPYIT.BAT transfers all files in all subdirectories of rem the source drive or directory (%1) to the destinationrem drive or directory (%2)xcopy %1 %2 /s /eif errorlevel 4 goto lowmemory if errorlevel 2 goto abort if errorlevel 0 goto exit :lowmemory echo Insufficient memory to copy files or echo invalid drive or command-line syntax. goto exit:abort echo You pressed CTRL+C to end the copy operation. goto exit :exit <br />要使用该批处理程序将 C:\Prgmcode 目录及其子目录中的所有文件复制到驱动器 B 中，请键入： <br /><br />copyit c:\prgmcode b: <br /><br />该命令解释程序将用&ldquo;C:\Prgmcode&rdquo;替换&ldquo;%1&rdquo;，用&ldquo;B:&rdquo;替换&ldquo;%2&rdquo;，然后执行带&ldquo;/e&rdquo;和&ldquo;/s&rdquo;命令行选项的&ldquo;xcopy&rdquo;。如果&ldquo;xcopy&rdquo;遇到错误，批处理程序将读取退出码并转到相应&ldquo;IF ERRORLEVEL&rdquo;语句中指示的标签，然后显示相应的消息并退出批处理程序。</p>]]></description>
		</item>
		
			<item>
			<link>http://www.techmango.com/default.asp?id=614</link>
			<title><![CDATA[改进了一下铁芒统计模块]]></title>
			<author>jimmysu_88@163.com(techmango)</author>
			<category><![CDATA[生活|个人日记]]></category>
			<pubDate>Sun,02 Nov 2008 16:09:59 +0800</pubDate>
			<guid>http://www.techmango.com/default.asp?id=614</guid>	
		<description><![CDATA[今天，我查看了一下铁芒统计的数据，发现数据又多了不少（这上面记录的冗余信息很多），突然一个灵感冒了出来，可以在原来用于记录引用页面的字段上改进一下使得它存放访客的历史访问页面,例如将鼠标放在＂所在城市＂的上面就可以看到这样的信息：<br/><br/><span style="color:Blue">counter_w.swf?UserId=Admin,ViewCounter.asp,LoadMod.asp?plugins=GuestBookFor<a href="http://www.pjhome.net" target="_blank">PJBlog</a>,tag.asp,default.asp</span><br/><br/>这些历史页面是以逗号分隔的,点击上面的链接就会跳转到这里面的第一页面了，感觉这样记录的访客信息就更详细了． <img src="http://www.techmango.com/images/smilies/smile.png" border="0" style="margin:0px 0px -2px 0px" alt=""/>]]></description>
		</item>
		
</channel>
</rss>