Pergunta

Eu tenho um determinado documento XML (a estrutura não pode ser alterada) e deseja obter os comentários escritos acima dos nós. O documento se parece com o seguinte:

<!--Some comment here-->    
    <attribute name="Title">Book A</attribute>
    <attribute name="Author">
       <value>Joe Doe</value>
       <value>John Miller</value>
    </attribute>
<!--Some comment here-->
    <attribute name="Code">1</attribute>

Portanto, os comentários são opcionais, mas se houver um, quero obter o comentário acima de cada atributo. Usando /*/comment()[n] Daria -me comentar n, mas para n = 2 eu naturalmente receberia o comentário do terceiro atributo, para que não haja conexão entre atributos e comentários alguma idéia? Obrigado

Foi útil?

Solução

Usar:

//comment()[following-sibling::*[1][self::attribute]]

Isso é mais compacto e preciso do que a resposta atualmente selecionada. o // A abreviação é necessária, uma vez que nenhum documento XML bem formado foi fornecido e o nível de nidificação dos nós de comentários não é conhecido.

Outras dicas

Se você deseja selecionar os comentários que são seguidos por um attribute Elemento, então isso deve funcionar:

/*/comment()[following-sibling::*[position()=1 and name()='attribute']]
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top