В приведенном ниже примере, как мне получить доступ к атрибуту 'id', когда он имеет префикс пространства имен?
scala> val ns = <foo id="bar"></foo>
ns: scala.xml.Elem = <foo id="bar"></foo>
scala> ns \ "@id"
res15: scala.xml.NodeSeq = bar
Выше работает отлично. В соответствии с документами ниже должно работать, но это не так.
scala> val ns = <foo xsi:id="bar"></foo>
ns: scala.xml.Elem = <foo xsi:id="bar"></foo>
scala> ns \ "@{xsi}id"
res16: scala.xml.NodeSeq = NodeSeq()
Все на Scala 2.8.0.final
Приветствия
Ответ: Кажется, что без xlmns в xml вы не можете получить доступ к атрибуту. Поэтому для приведенного выше примера работы он должен находиться внутри пространства имен xlm. например:.
scala> val xml = <parent xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <foo xsi:id="bar"></foo></parent>
xml: scala.xml.Elem = <parent xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <foo xsi:id="bar"></foo></parent>
scala> xml \ "foo" \ "@{http://www.w3.org/2001/XMLSchema-instance}id"
res3: scala.xml.NodeSeq = bar