日期:2014-05-19  浏览次数:20423 次

关于 xml 节点位置的问题,如何获取到某个节点在整个文档中的相对位置?
有这样一个XML文件:
<xmlroot>
        <xmlElement   id   =   "x1 "/>
        <xmlElement   id   =   "x2 "/>
        <xmlElement   id   =   "x3 "/>
        <xmlElement   id   =   "x4 "/>
</xmlroot>
偶用xpath定位到其中的某个节点,问题是,如何知道节点的位置呢?
XmlDocument   xd   =   new   XmlDocument();
xd.LoadXml(xmlString);
XmlNode   xn   =xd.SelectSingleNode( "/xmlroot/xmlElement[@id= 'x3 '] ");

偶该如何得到这个xn的索引位置呢?例如偶想知道它是第三个节点?

------解决方案--------------------
int index = 0;
XmlNode n = xn;
while (n != null)
{
n = n.PreviousSibling;
index++;
}
------解决方案--------------------
如果你非想得到序号的话,可以试试下面的方法:

XmlNode parentNode = xd.SelectSingleNode( "/xmlroot ");
int index = 0;
foreach(XmlNode n in parentNode.ChildNodes)
{
if(n.NodeType!=XmlNodeType.Comment)
{
index +=1;
XmlAttribute id = n.Attributes[ "id "];
if(id!=null&&id.Value== "x3 ")
break;
}
}