在下面的示例中,如果具有名称空间前缀,如何访问属性“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上
干杯
回答: 似乎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