以下面的 XML 为例:
<root>
<lines>
<line>
<number>1</number>
</line>
<line>
<number>2</number>
</line>
</lines>
</root>
XmlNodeList nodeList = doc.SelectNodes("//lines/line");
foreach(XmlNode node in nodeList)
{
int index = node.SelectSingleNode("//number");
}
上面的代码将导致两次迭代的 index = 1。
foreach(XmlNode node in nodeList)
{
int index = node.SelectSingleNode("number");
}
上面的代码将分别产生 1,2。我知道 // 找到 xpath 的第一次出现,但我觉得第一次出现应该是相对于节点本身。即使从子节点中选择节点,该行为似乎也会从根中找到第一次出现。这是微软希望它工作的方式还是这是一个错误。