在学习之前,我们通过一个
Hello World 的例子检查自己的机器是否已经 MSXML3 。第一步:建立要输入 XML 文档 hello.xml 。
< greeting > Hello, world! </ greeting >
第二步:建立 XSLT 文档 hello.xsl 。提示:默认的 XSLT 文件的后缀名为 .xsl 。
< xsl:stylesheet xmlns:xsl ="http://www.w3.org/TR/WD-xsl" >
< xsl:template match ="/" >
< html >
< head >
< title > First XSLT example </ title >
</ head >
< body >
< p >< xsl:value-of select ="greeting" /></ p >
</ body >
</ html >
</ xsl:template >
</ xsl:stylesheet >
第三步:在 XML 中调用这个 XSL 文件。修改 hello.xml 的代码为:
<? xml-stylesheet type="text/xsl" href="hello.xsl" ?>
< greeting > Hello, world! </ greeting >
我们要通过C#对XML文件进行操作就需要引入.NET Framework提供的专门操作XML的类和方法。
using System.XML;
通过XmlTextReader类可以实现对于一个XML文件进行从前至后的访问,并根据我在上一篇随笔中对于这个类的介绍中提到的Read()方法访问其中的内容,下面给出一段示例代码:
2 int elementCount = 0 ;
3 while (reader.Read())
4 {
5 if (reader.NodeType == XmlNodeType.Element)
6 {
7 elementCount ++ ;
8 }
9 }
因为XmlTextReader这种读取xml文件的方法对于xml文件来说是只读的,不允许执行插入、删除或者更新xml文档节点的操作。我们要实现对xml文件更灵活的操作就需要另一个类XmlDocument。我们先看一段示例代码然后作出详细解释:
2 XmlDoc.Load(pathToXmlDoc);
3 XmlElement root = xmlDoc.DocumentElement;
4 XmlElement newNode = xmlDoc. CreateElement ( " newNode " );
5 newNode.SetAttribute( " id " , " 1 " );
6 root.AppendChild(newNode);
第1行先实例化了一个XmlDocument对象。第2行通过其Load()方法,根据路径参数pathToXmlDoc加载相应路径下的xml文件。第3行实例化了一个XmlElement对象,并通过DocumentElement属性获取当前文档的根。第4行又实例化了一个XmlElement对象并通过XmlDocument的CreateElement方法创建一个元素节点,在第5行设置这个元素的属性,然后再在第6行将这个节点添加到了文档的根节点下。整段代码实现了从一个文件中加载xml,然后在根节点root下添加一个子元素以及它的相关属性。在根节点下会添加出这样一个节点。
<root>
<newNode id="1"/>
</root>
C#中不仅可以通过上面这种方法向xml文档中添加数据,还可以通过另一种方法是先这个功能。就是可以将按照xml标准写好的字符串加载到xml文档中。这需要用到XmlDocument类的LoadXml方法来实现,请看下面的应用:
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(myXml);
最后,给出一个完整的代码段来实现向一个xml文档中插入数据并保存为InsertedDoc.xml
![None.gif](/Images/OutliningIndicators/None.gif)
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![ContractedBlock.gif](/Images/OutliningIndicators/ContractedBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![ExpandedBlockEnd.gif](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![ContractedBlock.gif](/Images/OutliningIndicators/ContractedBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![ExpandedBlockEnd.gif](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
代码执行后,新文档的内容如下:
- < SomeData >
Old Data
- < Inserted >
< NewData > Inserted Data </ NewData >
</ Inserted >
</ SomeData >
</ XMLFile >