XmlNode. SelectSingleNode возвращает элемент, снаружи текущий?

моя проблема похожа на это. Скажем, у меня есть 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

19
задан Nick Alexeev 28 January 2011 в 06:55
поделиться

3 ответа

Выражение XPath у вас не то, что вам нужно.

Замените его на следующее:

node.SelectSingleNode( "element3" ); 

И вы получите результат, который ищете.

22
ответ дан 30 November 2019 в 03:07
поделиться

"//" - это глобальный поиск.

Что вам нужно сделать, так это получить список всех дочерних элементов.

XmlNodeList nodes = xmlDoc.SelectNodes("//Child");

пройти через этот список и выполнить

XmlNode node = nodes.SelectSingleNode("element3");

. Это вернет null, если его нет, и будет проходить через каждого просматривающего дочернего элемента.

8
ответ дан 30 November 2019 в 03:07
поделиться

проблема здесь в выражении XPath, которое вы используете, попробуйте его без '//'. Примерно так:

node.SelectSingleNode ("element3");

Подробнее здесь .

3
ответ дан 30 November 2019 в 03:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: