Получить значение xmlnode
У меня есть XML ниже. Сначала я сделаю SelectNode для выбора. Затем я хочу сделать foreach на двух выбранных узлах, а затем выбрать для каждого из них соответственно.
<Root>
<persons>
<Number>2525</Number>
<Number>2626</Number>
<persons>
<Number>2828</Number>
<Number>2929</Number>
</persons>
</persons>
</Root>
При первом запуске foreach я получаю Age и Name для Arpit и Tushar, используя Xpath =
XmlNodeList outcomelist = each.SelectNodes(".//*[local-name()='persons']/*[local-name()='Number']");
"каждый" - это текущий узел.
Пожалуйста, помогите правильно написать xpath, чтобы я мог получать значения только для текущего узла и исключая дочерний узел.
Обратите внимание, что этот xml предназначен только для примера. Настоящий xml очень большой и утомительный для анализа.
1 ответ
Я думаю, что вам нужно потратить некоторое время на знакомство с XPath, потому что вы используете "все, что работает" методы, такие как //
а также *[local-name() = '...']
и это доставляет вам неприятности.
Выбрать верхний уровень persons
этот XPath должен работать:
XmlNodeList persons = each.SelectNodes("/Root/persons/Number");
Если ваш XML использует пространства имен, то вы можете сделать это, чтобы выбрать имя:
XmlNodeList age =
each.SelectNodes("/*/*[local-name() = 'persons']/*[local-name() = 'Number']");
но, как я упоминал выше, это хак, и в этом случае вам действительно следует правильно обрабатывать пространства имен.