用DOM对XML文档的读写
    在.NET中利用DOM(Document Object Model)技术读写XML文档中的数据,System.XML名字空间下的XMLDocument类代表了DOM,它是递归定义的,文档中的每一个节点都有完全相同的属性和方法,可以用XMLNode遍历每一个结点。XMLNode常用属性:

 

名称

说明

Attributes

获取一个 XmlAttributeCollection,它包含该节点的属性。

ChildNodes

获取节点的所有子节点。

FirstChild

获取节点的第一个子级。

HasChildNodes

获取一个值,该值指示节点是否有任何子节点。

InnerText

获取或设置节点及其所有子节点的串联值。

InnerXml

获取或设置仅代表该节点的子节点的标记。

LastChild

获取节点的最后一个子级。

Name

当在派生类中被重写时,获取节点的限定名。

NodeType

当在派生类中被重写时,获取当前节点的类型。

OuterXml

获取表示此节点及其所有子节点的标记。

OwnerDocument

获取该节点所属的 XmlDocument

ParentNode

获取该节点(对于可以具有父级的节点)的父级。

PreviousSibling

获取紧接在该节点之前的节点。

Value

获取或设置节点的值。


用Xpath查询XML文档
    Xpath实质上是对查询结果集的一种描述,当一个表达式被用于选择节点时,源文档中所有满足Xpath表达式的节点都将被返回。XML文档内的的节点层次在一个Xpath表达式中用(\)表示,用(\\)表示被查询的文档树中的位置与是否满足所给的Xpath表达式无关,叫做深度搜索。代码示例:
XmlDocument docItem = new XmlDocument();
            docItem.Load(
@"\\..\item.xml");
            XmlNodeList heavyAttributes 
= docItem.SelectNodes("/items/item/attribute[@value>10 and @name='weight']");
            
foreach (XmlNode anode in heavyAttributes)
            
{
                Console.WriteLine(anode.ParentNode.Attributes[
"name"].Value);
            }

            XmlNodeList cw 
= docItem.SelectNodes("//attribute[@name='capacity']|//attribute[@name='weight']");

            XmlNodeList heavyitems 
= docItem.SelectNodes("//items/item[descendant:attribute[@name='weight' and @value>10]]");
            
foreach (XmlNode heavyitem in heavyitems)
            
{
                Console.WriteLine(heavyitem.Attributes[
"name"].Value);
            }

用XSLT转换XML文档
XslCompiledTransform xct = new XslCompiledTransform();
            xct.Load(
@"..\..\***.xslt");
            xct.Transform(
@"\..\item.xml""item.html");

用XSD确认XML
XML Schema定义XSD是一个XML方言,它描述一个XML文档中所含的格式、数据类型和约束。
XmlDocument docItem = new XmlDocument();
docItem.Load(
@"\\..\item.xml");
XmlSchema schema 
= XmlSchema.Read(new FileStream(@"..\..\..\item.xsd", FileMode.Open), new ValidationEventHandler(OnSchemaValidate));
docItem.Schemas.Add(schema);
docItem.Validate(
new ValidationEventHandler(OnValidate));