моя проблема похожа на это. Скажем, у меня есть xml как это
<root>
<child Name = "child1">
<element1>Value1</element1>
<element2>Value2</element2>
</child>
<child Name = "child2">
<element1>Value1</element1>
<element2>Value2</element2>
<element3>Value3</element3>
</child>
</root>
У меня есть метод, который добирается как параметр XmlNode "узел". Позволяет говорят, что "узел" имеет значение "child1" Затем, я пробую как это:
node.SelectSingleNode( "//element3" );
Проблемой является этот код возвраты element3 от "child2". То, что я хочу, - то, если нет никакого дочернего "element3" "узла" для возврата пустого указателя, таким образом, я добавляю его вручную.
С уважением,
Iordand
Выражение XPath у вас не то, что вам нужно.
Замените его на следующее:
node.SelectSingleNode( "element3" );
И вы получите результат, который ищете.
"//" - это глобальный поиск.
Что вам нужно сделать, так это получить список всех дочерних элементов.
XmlNodeList nodes = xmlDoc.SelectNodes("//Child");
пройти через этот список и выполнить
XmlNode node = nodes.SelectSingleNode("element3");
. Это вернет null, если его нет, и будет проходить через каждого просматривающего дочернего элемента.
проблема здесь в выражении XPath, которое вы используете, попробуйте его без '//'. Примерно так:
node.SelectSingleNode ("element3");
Подробнее здесь .