Xml 使用Scala进行Xpath处理

Xml 使用Scala进行Xpath处理,xml,scala,xpath,Xml,Scala,Xpath,我是Scala新手,试图了解Scala在使用XPath处理xml方面的能力 尽管如此,如果我尝试使用xpath从xml中提取值,比如使用Scala-elem\\\“/BCXYZ/abc/def”,这似乎是行不通的 不过,我可以使用类似于elem\\\“BCXYZ”\“abc”\“def”的东西,其中elem是一个scala.xml.elem对象(表示要从中提取xpath值的xml) 有人能确认一下吗。正如公认的答案所说,Scala XML没有内置XPath。它有一些类似于XPath的东西,用于非

我是Scala新手,试图了解Scala在使用XPath处理xml方面的能力

尽管如此,如果我尝试使用xpath从xml中提取值,比如使用Scala-elem\\\“/BCXYZ/abc/def”,这似乎是行不通的

不过,我可以使用类似于elem\\\“BCXYZ”\“abc”\“def”的东西,其中elem是一个scala.xml.elem对象(表示要从中提取xpath值的xml)


有人能确认一下吗。

正如公认的答案所说,Scala XML没有内置XPath。它有一些类似于XPath的东西,用于非常简单的路径提取,是的,它不会按照您想要的方式工作

Scala至少还有另外两个XML库,它们完全支持XPath

 <BCXYZ>
    <abc>
        <def>
            text
        </def>
    </abc>
</BCXYZ>

文本
查询将按所述方式工作

scala> elem \\ "BCXYZ" \ "abc" \ "def"
res20: scala.xml.NodeSeq = 
NodeSeq(<def>
text
</def>)
scala>elem\\\“BCXYZ”\“abc”\“def”
res20:scala.xml.NodeSeq=
诺德塞克(
文本
)

我不喜欢标准库的XML版本。如果您试图执行XPath表达式,我可以建议您吗

它可以让您编写以下内容:

import kantan.xpath.ops._

new java.io.File("input.xml").evalXPath[List[Int]]("//@id")
这将实现您期望的功能:将
input.xml
解析为xml文档,查找具有
id
属性的所有元素,并将该属性提取为
Int
,将所有值存储在
列表中