C#中XML的基本应用

在学习之前,我们通过一个 Hello World 的例子检查自己的机器是否已经 MSXML3
        第一步:建立要输入 XML 文档 hello.xml
<? xml version="1.0" encoding=" GB2312" ?>
< greeting > Hello, world! </ greeting >

 

<? xml version="1.0" encoding=" GB2312" ?>
< 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 version="1.0" encoding=" GB2312" ?>
<? xml-stylesheet type="text/xsl" href="hello.xsl" ?>
< greeting > Hello, world! </ greeting >

 

        我们要通过C#XML文件进行操作就需要引入.NET Framework提供的专门操作XML的类和方法。
        using System.XML;
        通过XmlTextReader类可以实现对于一个XML文件进行从前至后的访问,并根据我在上一篇随笔中对于这个类的介绍中提到的Read()方法访问其中的内容,下面给出一段示例代码:        第1行定义了一个XmlTextReader对象,然后根据对其进行实例化时的xml文件所在路径参数pathToXmlDoc指定这个对象所对应的xml文件。第3行通过其Read()方法顺序读取xml文件中的内容,并在第5行判断当前读取的节点是否为一个元素节点。整个程序实现了计算xml文件中节点的个数。

1  XmlTextReader reader  =   new  XmlTextReader(pathToXmlDoc);
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。我们先看一段示例代码然后作出详细解释:        第1行先实例化了一个XmlDocument对象。第2行通过其Load()方法,根据路径参数pathToXmlDoc加载相应路径下的xml文件。第3行实例化了一个XmlElement对象,并通过DocumentElement属性获取当前文档的根。第4行又实例化了一个XmlElement对象并通过XmlDocumentCreateElement方法创建一个元素节点,在第5行设置这个元素的属性,然后再在第6行将这个节点添加到了文档的根节点下。整段代码实现了从一个文件中加载xml,然后在根节点root下添加一个子元素以及它的相关属性。在根节点下会添加出这样一个节点。
        <root>
                <newNode id="1"/>
        </root> 

1  XmlDocument xmlDoc  =   new  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);

 

        C#中不仅可以通过上面这种方法向xml文档中添加数据,还可以通过另一种方法是先这个功能。就是可以将按照xml标准写好的字符串加载到xml文档中。这需要用到XmlDocument类的LoadXml方法来实现,请看下面的应用:        最后,给出一个完整的代码段来实现向一个xml文档中插入数据并保存为InsertedDoc.xml代码执行后,新文档的内容如下:

string  myXml  =   " <root><someNode>Hello</someNode></root> " ;
XmlDocument xmlDoc 
=   new  XmlDocument();
xmlDoc.LoadXml(myXml);

 

try
{
    XmlNode currNode;
    XmlDocument doc 
= new XmlDocument();
    doc.LoadXml(
"<XMLFile>" + " <SomeData>Old Data</SomeData>" + "</XMLFile>");
    XmlDocumentFragment docFrag 
= doc.CreateDocumentFragment();
    docFrag.InnerXml
="<Inserted>" + " <NewData>Inserted Data</NewData>" + "</Inserted>";
    
//insert the availability node into the document
    currNode = doc.DocumentElement.FirstChild;
    currNode.InsertAfter(docFrag, currNode.LastChild);
    
//save the output to a file
    doc.Save("InsertedDoc.xml");
}

catch  (Exception e)
{
    Console.WriteLine (
"Exception: {0}", e.ToString());
}

 

< XMLFile >
    - 
< SomeData >
    Old Data
        - 
< Inserted >
            
< NewData > Inserted Data </ NewData >
        
</ Inserted >
    
</ SomeData >
</ XMLFile >
        这是一个很简单 XML 文档,只包含一个节点的 XML 结构树。
        第二步:建立 XSLT 文档 hello.xsl 。提示:默认的 XSLT 文件的后缀名为 .xsl 。         你现在可以用 IE5.0 以上版本浏览器打开这个 hello.xsl 文件,看到 XSL 的结构树。
        第三步:在 XML 中调用这个 XSL 文件。修改 hello.xml 的代码为:         ok, 到这一步原理上已经完成了所有的代码,接下来只要用一个 XSLT 的处理器 (XML Processor) 来执行 hello.xml 就可以看到 "hello world" 的显示结果了。在微软的 IE5.5 内嵌了 MSXML3 解释器,你可以用 IE5.5 打开 hello.xml 文件,就可以看到结果。如果只看到 XML 结构树,不是单独的 "hello world" 字样,说明你的浏览器没有安装 MSXML3 版本。  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值