2011-05-19 81 views
6

我被困在解析其元素名稱中包含「:」的XML。使用Scala和XML標籤中的冒號(:)分析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>元素標記的值。請讓我知道如何得到它。

回答

9

運營商\\誤導。它不接受XPath查詢,只是節點名稱。如果要過濾前綴名稱 - 以下部分之前的部分: - 該部分查詢必須位於scala中。像這樣的東西應該工作:

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

謝謝,現在完美的工作。我不得不附加.text來獲取字符串的值。 – pawank 2011-05-19 13:12:52