在下面的示例中,如果具有名称空间前缀,如何访问属性"id"?
scala> val ns = <foo id="bar"></foo>
ns: scala.xml.Elem = <foo id="bar"></foo>
scala> ns \ "@id"
res15: scala.xml.NodeSeq = bar
Run Code Online (Sandbox Code Playgroud)
以上工作正常.根据下面的文档应该工作但它没有.
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()
Run Code Online (Sandbox Code Playgroud)
全部在Scala 2.8.0.final上
干杯
答: 似乎xml中没有xlmns你无法访问该属性.因此,对于上面的示例,它需要位于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
Run Code Online (Sandbox Code Playgroud)
Caf*_*rog 13
看一下这篇文章:使用命名空间访问XML属性.
它看起来像在下面提到的uri:
ns \ "@{uri}foo"
Run Code Online (Sandbox Code Playgroud)
指等号后的部分.这有效:
scala> val ns = <foo xmlns:id="bar" id:hi="fooMe"></foo>
ns: scala.xml.Elem = <foo id:hi="fooMe" xmlns:id="bar"></foo>
scala> ns \ "@{bar}hi"
res9: scala.xml.NodeSeq = fooMe
Run Code Online (Sandbox Code Playgroud)
所以我认为foo之后的第一件事是定义你的URL和命名空间,然后定义属性,所以如果你想获得属性"bar",可能是这样的:
scala> val ns = <foo xmlns:myNameSpace="id" myNameSpace:id="bar"></foo>
ns: scala.xml.Elem = <foo myNameSpace:id="bar" xmlns:myNameSpace="id"></foo>
scala> ns \ "@{id}id"
res10: scala.xml.NodeSeq = bar
Run Code Online (Sandbox Code Playgroud)
虽然我不确定重用URI作为属性名称的正确性.
| 归档时间: |
|
| 查看次数: |
4474 次 |
| 最近记录: |