XPath que selecciona um segundo elemento, se o primeiro elemento está em branco

votos
0

Eu tenho alguns XML que às vezes se parece com isso:

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

E então às vezes pode faltar o elemento Nome e ter outro nome:

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

A lógica por trás o que eu preciso é:

Se tem um valor, use isso. Se isso não acontecer, use.

Eu tentei adaptar o que eu encontrei aqui:

XPath: Padrão de 'Nó', selecione 'Node B' em vez se 'Node B' não está vazio

Mas sem sucesso ... alguma idéia?

Publicado 20/10/2018 em 13:52
fonte usuário
Em outras línguas...                            


1 respostas

votos
2

Com XPath 2.0 e acima, você pode fazer isso com

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

Com XPath-1.0 só que é um pouco mais complicado, mas isso vai funcionar:

item/name[. !=''] | item/altname[../name ='']
Respondeu 20/10/2018 em 14:13
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more