Мой XML выглядит так:
<?xml version=\"1.0\"?>
<itemSet>
<Item>one</Item>
<Item>two</Item>
<Item>three</Item>
.....maybe more Items here.
</itemSet>
Некоторые отдельные элементы могут присутствовать или отсутствовать. Скажем, я хочу получить элемент <Item>
two</Item>
, если он присутствует. Я пробовал следующие XPaths (на С#).
XMLNode node = myXMLdoc.SelectSingleNode("/itemSet[Item='two']")
--- Если присутствует элемент два, он возвращает мне только первый элемент один. Возможно, этот запрос просто указывает на первый элемент в itemSet, если он имеет Item со значением два где-то в качестве дочернего элемента. Верна ли эта интерпретация?
Итак, я попытался:
XMLNode node = myXMLdoc.SelectSingleNode("/itemSet[Item='two']/Item[1]")
--- Я прочитал этот запрос как, верните мне первый элемент<Item>
в itemSet со значением = 'two'. Я прав?
Это по-прежнему возвращает только первый элемент one. Что я делаю неправильно? В обоих случаях, используя братьев и сестер, я могу пройти через дочерние узлы и добраться до двух, но это не то, на что я смотрю. Также, если два отсутствуют, SelectSingleNode возвращает null. Таким образом, сам факт, что я получаю успешный возвращаемый узел, действительно указывает на присутствие элемента два, поэтому, если бы я хотел, чтобы логический тест проверял наличие два, любой из приведенных выше XPath был бы достаточен, но я на самом деле мне нужен полный элемент <Item>two</Item>
в качестве возвращаемого узла.
[Мой первый вопрос здесь, и я впервые работаю с веб-программированием, поэтому я только что изучил приведенные выше XPaths и связанный с ними материал xml на лету из прошлых вопросов в SO. Так что будьте нежны и дайте мне знать, если я дурак или нарушаю какие-либо правила сообщества. Спасибо.]