我一直在解析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>
元素标记的值。请让我知道如何获得它。
答案 0 :(得分:10)
\\
运算符具有误导性。它不接受XPath查询,只接受节点名称。如果要过滤前缀名称 - 前面的部分: - 查询的那部分必须在scala中。这样的事情应该有效:
val name = (dom \\ "name").filter(_.prefix == "host")