我是Scala的新手,并尝试了解Scala在使用xpath进行xml处理方面的功能。
虽然Simple Xpath query in scala但是如果我尝试使用xpath从xml中提取值,例如 - elem \\“/ BCXYZ / abc / def ” - 使用Scala,它不会工作。
我可以使用 elem \\“BCXYZ”\“abc”\“def”之类的内容,其中 elem 是scala.xml.Elem对象(代表xml,我想从中提取xpath值。)
有人可以确认吗。
答案 0 :(得分:1)
正如公认的答案所说,Scala XML没有内置XPath。对于非常简单的路径提取,它看起来像XPath,是的,它不会按照你想要的方式工作。
Scala至少有两个其他XML库,one of which具有完整的XPath支持。
答案 1 :(得分:1)
我不喜欢标准库的XML版本。如果您尝试执行XPath表达式,我可以建议kantan.xpath吗?
它可以让你写下这样的东西:
import kantan.xpath.ops._
new java.io.File("input.xml").evalXPath[List[Int]]("//@id")
这将按预期执行:将input.xml
解析为XML文档,查找具有id
属性的所有元素,并将该属性提取为Int
,并将所有值存储为List
。
答案 2 :(得分:0)
给出类似
的XML <BCXYZ>
<abc>
<def>
text
</def>
</abc>
</BCXYZ>
查询将按照规定运作
scala> elem \\ "BCXYZ" \ "abc" \ "def"
res20: scala.xml.NodeSeq =
NodeSeq(<def>
text
</def>)