使用javax.xml.xpath。使用scala.xml

时间:2011-08-30 01:19:32

标签: xml scala

是否可以将javax.xml.xpath.XPathExpressionscala.xml.NodeSeq s一起使用?

我想要一个允许我表达类似的API:

val xml = ...
val xpath = XPathFactory.newInstance.newXPath.compile(
    """/this/that/theOther[@abc="123"]""")
val selectedNodes: NodeSeq = xml.applyXpath(xpath)

2 个答案:

答案 0 :(得分:2)

Scala采用功能性方法来搜索XML。在相同的情况下,它不像XPath那样清晰,并且需要一些人习惯它。例如:

scala> val myXml = <books><book category="1">first</book><book category="2">second</book><book category="1">third</book></books>
myXml: scala.xml.Elem = <books><book category="1">first</book><book category="2">second</book><book category="1">third</book></books>

scala> (myXml \ "book").filter { node => (node \\ "@category").text == "1" }
res24: scala.xml.NodeSeq = NodeSeq(<book category="1">first</book>, <book category="1">third</book>)

答案 1 :(得分:1)

它的Scala XML和javax.xml.xpath是绝对必需的吗?或者您更愿意在Scala中使用基于字符串的XPath。

Scales Xml添加了基于字符串的XPath用法(以及更快的内部语法),但我还没有决定提供javax.xml.xpath实现是否有意义。

如果这对人们有用,我会考虑花更多的时间来实施它。