首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

♀XPath的SelectNodes查询有奇怪有关问题,请高手指教!♂(

2012-01-30 
♀XPath的SelectNodes查询有奇怪问题,请高手指教!♂(在使用SelectNodes查询Xml节点的时候,第一次从根出发没

♀XPath的SelectNodes查询有奇怪问题,请高手指教!♂(
在使用SelectNodes查询Xml节点的时候,第一次从根出发没问题,可是从查询出来的节点再次使用SelectNodes就不好使了,如下面的代码,cs的Count最后是0,取不到东西,不知道是什么问题,请指教!

XML文件如下:

<?xml   version= "1.0 "   encoding= "utf-8 "   ?>
<root>
    <subRoot>
        <c> 1 </c>
        <c> 2 </c>
        <c> 3 </c>
        <c> 4 </c>
        <c> 5 </c>
        <c> 6 </c>
    </subRoot>
    <subRoot>
        <c> 7 </c>
    </subRoot>
    <subRoot>
        <c> 8 </c>
    </subRoot>
    <subRoot>
        <c> 9 </c>
    </subRoot>
    <subRoot>
        <c> a </c>
        <c> b </c>
    </subRoot>
    <subRoot>
        <c> c </c>
        <c> d </c>
        <c> e </c>
    </subRoot>
</root>

源程序代码:

XmlDocument   doc   =   new   XmlDocument();
doc.Load(Application.StartupPath   +   @ "\XMLFile1.xml ");
XmlNode   root   =   doc.DocumentElement;
XmlNodeList   subRoots   =   root.SelectNodes( "/root/subRoot ");
foreach   (XmlNode   n   in   subRoots)
{
        XmlNodeList   cs   =   n.SelectNodes( "/subRoot/c ");
}

[解决办法]
foreach (XmlNode n in subRoots)
这里的n已经是subrRoot了,所以你就不能再用n.SelectNodes( "/subRoot/c ");因为你用的是相对路径.

这样写就好啦:
XmlNodeList cs = n.SelectNodes( "c ");

[解决办法]
XmlNodeList cs = n.SelectNodes( "/subRoot/c ");
--》
XmlNodeList cs = n.SelectNodes( "c ");
这样没问题的
我试过了

n这个节点已经是subRoot了
所以如果用n.SelectNodes的时候
Path应该从subRoot的子节点开始

热点排行