Возьмите следующий 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");
}
Приведенный выше код приведет к индексу = 1 для обеих итераций.
foreach(XmlNode node in nodeList)
{
int index = node.SelectSingleNode("number");
}
Приведенный выше код даст 1,2 соответственно. Я знаю, что // находит первое вхождение xpath, но мне кажется, что первое вхождение должно быть относительно самого узла. Похоже, что поведение находит первое вхождение от корня даже при выборе узлов из дочернего узла. Это так задумано Майкрософт или это ошибка?
.//number
. Это должно сделать поиск из узла контекста.//
предназначен для поиска всего документа, а не контекста. - person Lingamurthy CS   schedule 19.02.2016