有这样一个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的索引位置呢?例如偶想知道它是第三个节点?
<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的索引位置呢?例如偶想知道它是第三个节点?
XmlNode n = xn;
while (n != null)
{
n = n.PreviousSibling;
index++;
}
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;
}
}
XmlNode parentNode = xd.SelectSingleNode("/xmlroot");
string innerStr = parentNode.InnerXml;这样得到的 innerStr 内容如下:<xmlElement id = "x1"/>
<xmlElement id = "x2"/>
<xmlElement id = "x3"/>
<xmlElement id = "x4"/>我写个正则表达式,把 这个替换成 """X3" (注:第一个" 是 x1前的,第二个" 是 x2前的,第三个" 是 x3前的, x3后的 " 是x4前的)这个你再用 innerStr.IndexOf("\"X3") + 1 这就是你要的序号。这里的难点就是你如何来写这个正则。