XML文件读取、创建、操作

这个61850的项目中,用到了对XML文档的一些应用,包括XML文档的读取、创建。今天,将用到的东西做一个总结。

首先,来认识一下XML文档:

<bookstore>
	<book genre="novel" ISBN="1-861001-57-5">
		<title>Pride And Prejudice</title>
	</book>
	<book genre="autobiography" publicationdate="1981" ISBN="1-861003-11-0">
		<title>The Autobiography of Benjamin Franklin</title>
		<author>
			<first-name>Benjamin</first-name>
			<last-name>Franklin</last-name>
		</author>
		<price>8.99</price>
	</book>
</bookstore>

以上,这一段XML是来自于MSDN中的例子。首先,XML文档是一个树形结构,由很多节点构成。认识XML文档是以后操作的基础,一下是自己的理解,说法可能有些不规范。

bookstore:为根节点;

book:为子节点,它里面的genre、ISBN为该节点的属性,"novel"、"1-861001-57-5"为属性值。

title:为book的儿子节点,Pride And Prejudice 为节点的Text值。

整体也就这些东西了,看起来是比较简单。


好了,我们看一下怎么读取XML文档,并获取相应的值。

第一步:利用Load函数装载XML文档,考虑到项目的XML文档不是太大,所以采用DOM的方式。项目实际用到的XML文档大多是40-50M,装载时间是2S,还是比较快。

            XmlDocument doc2 = new XmlDocument();
            doc2.Load("books.xml");

第二步,获取根节点:

           XmlNode root = doc2.DocumentElement;

第三步,获取节点集。这里用到的类是XmlNodeList,例如获取某个节点的所有子节点。

          XmlNodeList NodeList = root.ChildNodes;

对于节点集的获取,如果XML文档比较复杂的话,那XPath技术就能很好的体现出它的价值,列出自己常用的函数方法:

第一种绝对查找:即从根节点开始查找,name为IED节点的一个属性,它的值为Name。nsmgr是命名空间,如果你的XML文档中有命名空间的话,必须添加上,否则会查找不到你想要的节点集。

          xPath = "/SCL/IED[@name='" +Name + "']/AccessPoint";
          xPath = xPath.Replace("/", "/ns:");
          XmlNodeList AccessList = root.SelectNodes(xPath, nsmgr);

          foreach (XmlNode AccessNode in AccessList)
          {}

第二种相对查找:为从当前节点往下查找。以./开头

                    xPath = "./Server/LDevice";
                    xPath = xPath.Replace("/", "/ns:");
                    XmlNodeList LDList = AccessNode.SelectNodes(xPath, nsmgr);

第四步,获取到 了节点集。接下来就是要获取节点的Text值,属性值。

获取Text值很简单:string str=XmlNode.InnerText就可以了;

对于节点属性值得获取,稍微有点麻烦。首先将XmlNode节点进行强制类型转换:name为节点的属性

      XmlElement NodeEle = (XmlElement)XmlNode;

     string str=Node.GetAttribute("name");

以上对于XML文档的获取,基本就这些,用起来很方便。


下一篇讲如果新建写入XML文档。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值