Ваш второй xpath начинается с //
.Это сокращение для /descendant-or-self::node()
, которое, как вы можете видеть, начинается с /
, то есть оно ищет в корне документа , независимо от контекста, в котором вы его используете.
Вы, вероятно, хотите, чтобы один из:
var rowName = row.SelectSingleNode("name");
нашел name
узлов, которые являются непосредственными потомками из row
, или
var rowName = row.SelectSingleNode(".//name");
, чтобы найтиname
узлов * где-либо под the
строкой . Note the
.` в этом втором xpath, который вызывает запуск xpath с узла контекста.