使用Scala进行Xpath处理

时间:2014-04-15 23:29:29

标签: xml scala xpath

我是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值。)

有人可以确认吗。

3 个答案:

答案 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>)