今天又一次接触了操作xml文件,其间碰到了诸如保存设置,查询等问题,不过经过不断搜索网络总算解决了问题。特别是一个多条件查询xml节点的问题,解决方法倒是很简单。
Xml文件主要内容如下:
<Config>
<acts>
<a a1='2'></a>
<a a2='3'></a>
<a a2='4'></a>
</acts>
<acts aa='0'>
<a a1='2'></a>
<a a2='3'></a>
<a a2='4'></a>
</acts>
</Config>
我碰到的问题就是当需要查询所有的a节点,限制条件是:acts节点aa属性值为0以及其a子结点a1属性值为空(其实就是没有a1这个属性)
我在使用selectnodes函数对于xpath的编写就遇到了这样的问题:a属性值为空该如何表示了?是a1= null?还是a1=‘’?最后还是在搜索网络的时候发现可以这样来表示某个节点的属性不存在即not(属性)
因此最后的查询语句应该是XmlDoc.SelectNodes("Config/act[@aa='0']/a[not(@a1)] ");
希望这个能帮助到您。
Xml文件主要内容如下:
<Config>
<acts>
<a a1='2'></a>
<a a2='3'></a>
<a a2='4'></a>
</acts>
<acts aa='0'>
<a a1='2'></a>
<a a2='3'></a>
<a a2='4'></a>
</acts>
</Config>
我碰到的问题就是当需要查询所有的a节点,限制条件是:acts节点aa属性值为0以及其a子结点a1属性值为空(其实就是没有a1这个属性)
我在使用selectnodes函数对于xpath的编写就遇到了这样的问题:a属性值为空该如何表示了?是a1= null?还是a1=‘’?最后还是在搜索网络的时候发现可以这样来表示某个节点的属性不存在即not(属性)
因此最后的查询语句应该是XmlDoc.SelectNodes("Config/act[@aa='0']/a[not(@a1)] ");
希望这个能帮助到您。