如何访问带有名称空间的属性?我的XML数据在一个表单中
val d = <z:Attachment rdf:about="#item_1"></z:Attachment>
但以下内容与属性不匹配
(d \\ "Attachment" \ "@about").toString
如果我从属性名称中移除名称空间组件,那么它就可以工作。
val d = <z:Attachment about="#item_1"></z:Attachment>
(d \\ "Attachment" \ "@about").toString
知道如何在Scala中使用名称空间访问属性吗?
3条答案
按热度按时间yvfmudvl1#
API文档引用了以下语法
ns \ "@{uri}foo"
。在你的例子中,没有定义名称空间,Scala似乎认为你的属性是无前缀的,参见
d.attributes.getClass
。如果你这么做:
然后:
fgw7neuy2#
你总是可以
或者在您的情况下也匹配
xml.Attribute
但是,
Attribute
根本不关心前缀,因此如果需要前缀,需要显式使用PrefixedAttribute
:然而,当有多个属性时,就会出现问题。有人知道如何修复这个问题吗?
31moq8wy3#
假设我们有
要访问属性的值,在scala-xml中有
但是它不适用于名称空间。不过,你可以添加一个方法来处理名称空间,如下所示:
然后像这样使用它:
对我有用。