La situación Espacio de nombres:manejo en Groovys XmlSlurper
def str = """
<foo xmlns:weird="http://localhost/">
<bar>sudo </bar>
<weird:bar>make me a sandwich!</weird:bar>
</foo>
"""
def xml = new XmlSlurper().parseText(str)
println xml.bar
La salida de este fragmento es
# sudo make me a sandwich!
Parece que el analizador se fusiona el contenido de <bar>
y <weird:bar>
.
Se desea este comportamiento y, en caso afirmativo, ¿cómo puedo evitar esto y seleccionar solo <bar>
o <weird:bar>
?
Gracias, eso explica algunas cosas :) Estoy analizando diferentes xmls y no sé qué espacios de nombres están usando; ¿hay alguna posibilidad de lograr la salida de 'println xml. ': bar'' además de analizar el elemento raíz para los espacios de nombres y declararlos? – codeporn
Creo que XmlSlurper es consciente del espacio de nombres de forma predeterminada, ya que 'new XmlSlurper() -> new XmlSlurper (falso, verdadero)': http://stackoverflow.com/questions/33418826/are-xmlparser-and-xmlslurper-namespace- aware-by-default – jalopaba
Ugh. Por alguna razón, esto no funciona para mí. Estoy analizando un documento RSS con espacios de nombres declarados en los encabezados. Puedo acceder a rss.channel.link pero rss.channel.'atom: link'.text() y rss.channel.'atom: link '. @ Href.text() todos devuelven valores en blanco. :( – Umopepisdn