xml中定位到任一节点

来源:互联网 发布:linux虚拟机上网 编辑:程序博客网 时间:2024/05/23 18:37

程序中如用到xml,一般很需要根据某一条件定位到xml的某一节点

 

XmlDocument xml = new XmlDocument()

经常会用到 xml.SelectSingleNode(xpath)方法

其中关键就是xpath即xml节点的路径的写法,只要xpath写的正确,就可以轻松定位到需要的节点

 

常用的运算符和特殊字符为:

/  子运算符,即下一级

// 任意深度的元素,如果写在开头,则从根节点递归向下

[] 匹配符,就是匹配某一元素条件的

@ 属性名的前缀

 

下面一个例子演示用法(假设xml层级很多,无法确定为几层)

有一xml文件

<root title="学校"  >
  <node title="班级-1">
    <node title="学生A" >

      <sex title="男"    />
    </node>
    <node title="学生B" >
    </node>
  </node>
  <node title="班级-2">
    <node title="学生C" sex=”女” >
    </node>
    <node title="学生D" >
    </node>
  </node>
</root>

 

1.如要取得性别为“男“的那个学生的节点

则:xml.SelectSingleNode("root//node[sex='男']")

该方法指从root节点下查找node节点下sex元素为“男“的node节点 ,返回<node title="学生A" >节点元素

或者xml.SelectSingleNode("//node[sex='男']")

该方法默认从根节点下查找node节点下sex元素为“男“的node节点 ,返回<node title="学生A" >节点元素

 

2.如要取得性别为“女“的学生节点

则:xml.SelectSingleNode("root//node[@sex='女']")

该方法指从root节点下查找node节点下sex属性为“女“的node节点 ,返回<node title="学生C" sex=”女” >
节点元素

或者xml.SelectSingleNode("//node[@sex='女']")

该方法默认从根节点下查找node节点下sex属性为“女“的node节点 ,返回<node title="学生C" sex=”女” >
节点元素

 

3.如想获取root节点下一次所有node元素

则:xml.SelectNodes("root/node")

返回的是 <node title="班级-1">, <node title="班级-2">

 

4.如想获取root节点下任一深度所有node元素

则:xml.SelectNodes("root//node")

返回的是所有的node节点

 

5.如想获取root节点下下一级的所有node元素

则:xml.SelectNodes("root/*/node")

返回的是 <node title="学生A" >, <node title="学生B" >, <node title="学生C" sex=”女” >
,<node title="学生D" >

 

6.如果是一级一级的往下获取节点

首先XmlNode node = xml.SelectSingleNode("root/node[@title='班级-1']")

返回的是

<node title="班级-1">
    <node title="学生A" >

      <sex title="男"    />
    </node>
    <node title="学生B" >
    </node>
  </node>

此时再次想获取班级下面的学生

node.SelectNodes("node") 不需要在node前加"/",因为它是在该节点的innerXML中找的

它的innerXML只包含

<node title="学生A" >

      <sex title="男"    />
</node>
<node title="学生B" >
</node>

故此,返回

<node title="学生A" >

      <sex title="男"    />
</node>
<node title="学生B" >
</node>
 

 

 

以上只是几个简单的例子,更多的例子参考

http://msdn.microsoft.com/zh-cn/ms256122.aspx

 

原创粉丝点击