xml
  • scala
  • 2011-05-19 210 views 6 likes 
    6

    Estoy atrapado en el análisis XML que tiene ":" en su nombre de elemento.Parse XML usando Scala con dos puntos (:) dentro de la etiqueta XML

    XML de ejemplo se muestra a continuación:

    val xml:String = <epp xmlns='urn:ietf:params:xml:ns:epp-1.0' 
           xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' 
           xsi:schemaLocation='urn:ietf:params:xml:ns:epp-1.0 epp-1.0.xsd'> 
           <command> 
            <create> 
             <host:create xmlns:host='urn:ietf:params:xml:ns:host-1.0' 
               xsi:schemaLocation='urn:ietf:params:xml:ns:host-1.0host-1.0.xsd'> 
              <host:name>ns-1.dns.net</host:name> 
             </host:create> 
            </create> 
            <clTRID>TRID-1-100043434343</clTRID> 
           </command> 
           </epp> 
    
    val dom = scala.xml.XML.loadString(xml) 
    val name = dom \\ "host:name" 
    

    name siempre está vacía.

    Necesito obtener el valor de la etiqueta del elemento <host:name>. Por favor, hágame saber cómo conseguirlo.

    Respuesta

    9

    El operador \\ es engañoso. No acepta consultas XPath, solo nombres de nodos. Si desea filtrar el nombre del prefijo, la parte anterior a: - esa parte de la consulta tendrá que estar en scala. Algo como esto debería funcionar:

    val name = (dom \\ "name").filter(_.prefix == "host") 
    
    +0

    Gracias, funciona perfectamente ahora. Tuve que agregar .text para obtener el valor en cadena. – pawank

    Cuestiones relacionadas