使用Scala解析带有冒号(:)的XML标签

6

我在解析具有“:”的元素名称的XML时遇到了困难。

以下是示例XML:

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 总是为空。

我需要获取 <host:name> 元素标签的值。请告诉我如何获取它。

1个回答

10

\\ 运算符是误导性的。它不接受 XPath 查询,只接受节点名称。如果您想要过滤前缀名称 - 即 : 之前的部分 - 那么查询的那部分需要使用 Scala。以下类似这样的代码应该可以工作:

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

谢谢,现在完美运行。我必须添加“.text”将值转换为字符串。 - pawank

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接