用DOM对XML文档的读写
在.NET中利用DOM(Document Object Model)技术读写XML文档中的数据,System.XML名字空间下的XMLDocument类代表了DOM,它是递归定义的,文档中的每一个节点都有完全相同的属性和方法,可以用XMLNode遍历每一个结点。XMLNode常用属性:
|
名称 |
说明 |
获取一个 XmlAttributeCollection,它包含该节点的属性。 |
||
获取节点的所有子节点。 |
||
获取节点的第一个子级。 |
||
获取一个值,该值指示节点是否有任何子节点。 |
||
获取或设置节点及其所有子节点的串联值。 |
||
获取或设置仅代表该节点的子节点的标记。 |
||
获取节点的最后一个子级。 |
||
当在派生类中被重写时,获取节点的限定名。 |
||
当在派生类中被重写时,获取当前节点的类型。 |
||
获取表示此节点及其所有子节点的标记。 |
||
获取该节点所属的 XmlDocument。 |
||
获取该节点(对于可以具有父级的节点)的父级。 |
||
获取紧接在该节点之前的节点。 |
||
获取或设置节点的值。 |
用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);
}
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");
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));
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));