XPATH для выбора всех ненулевых дочерних элементов плюс значение по умолчанию, если оно не найдено - PullRequest
0 голосов
/ 14 марта 2019

Существует ли XPATH для возврата всех ненулевых someChild плюс значение по умолчанию, если значение on не найдено?

<someFather>
    <someChild/>
    <someChild/>
    <someChild>some value</someChild>
    <someChild/>
    <someChild>some other value</someChild>
    <someChild/>
</someFather>

Хотел бы получить:

""
""
some value
""
some other value
""

или

"not-found"
"not-found"
some value
"not-found"
some other value
"not-found"

Ответы [ 2 ]

3 голосов
/ 14 марта 2019
/someFather/someChild/(text()/string(), "not-found")[1]

Это тщательно написано, чтобы не нарушать правило, согласно которому RHS для "/" не может выбирать смесь узлов и атомных значений.В 3.0 вы можете использовать "!"оператор:

/someFather/someChild ! (text(), "not-found")[1]
2 голосов
/ 14 марта 2019

Попробуйте следующее выражение:

/someFather/(someChild/string(), '') 
...