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

使用javax.xml.xpath。使用scala.xml,xml,scala,Xml,Scala,是否可以将javax.xml.xpath.XPathExpressions与scala.xml.NodeSeqs一起使用 我想要一个API,它允许我表达如下内容: val xml = ... val xpath = XPathFactory.newInstance.newXPath.compile( """/this/that/theOther[@abc="123"]""") val selectedNodes: NodeSeq = xml.applyXpath(xpath) Scal

是否可以将
javax.xml.xpath.XPathExpression
s与
scala.xml.NodeSeq
s一起使用

我想要一个API,它允许我表达如下内容:

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

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>)
scala>val myXml=firstsecondthird
myXml:scala.xml.Elem=firstsecondthird
scala>(myXml\“book”).filter{node=>(node\\“@category”).text==“1”}
res24:scala.xml.NodeSeq=NodeSeq(第一、第三)

是否绝对要求其Scala XML和javax.XML.xpath?或者您更愿意在Scala中使用基于字符串的XPath

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


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

谢谢,但是,这并不能解决这个问题:有一个现有的库,它混合了<代码> javax .xMx.x/<代码> > <代码> Scala。XML/COD>你还有第二个问题:“还有别的选择吗?”我回答了第二个问题。我修改后的问题的答案(因为我并不真正关心替代方案)是“不,这是不可能的”。不过还是要打勾。:)是的,后者。我只想在Scala中使用XPath。非常感谢。