Разбор XML с использованием Scala с двоеточием (:) внутри тега XML - PullRequest
6 голосов
/ 19 мая 2011

Я застрял в синтаксическом анализе 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 голосов
/ 19 мая 2011

Оператор \\ вводит в заблуждение. Он не принимает запросы XPath, только имена узлов. Если вы хотите отфильтровать имя префикса - часть перед: - эта часть запроса должна быть в Scala. Примерно так должно работать:

val name = (dom \\ "name").filter(_.prefix == "host")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...