XPath, который выбирает второй элемент, если первый элемент пуст - PullRequest
0 голосов
/ 20 октября 2018

У меня есть какой-то XML, который иногда выглядит так:

<object>
    <item>
        <name>Item Name</name>
    </item>
 </object>

А иногда может отсутствовать элемент Name и иметь другое имя:

<object>
    <item>
        <name/>
        <altname>Item Name 2</altname>
    </item>
 </object>

Логика, которая мне нужнаis:

Если имеет значение, используйте его.Если это не так, используйте.

Я попытался адаптировать то, что нашел здесь:

XPath: По умолчанию установлено значение «Узел A», вместо этого выберите «Узел B», если «Узел B».'не пусто

Но безрезультатно ... есть идеи?

1 Ответ

0 голосов
/ 20 октября 2018

С XPath-2.0 и выше вы можете сделать это с

if (item/name !='') then item/name else item/altname

Только с XPath-1.0 это немного сложнее, но это будет работать:

item/name[. !=''] | item/altname[../name ='']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...