我有 XML 我正在尝试使用Scala XML API。我有 XPath 查询来从 XML 标记中检索数据。我想从中检索<price>
标签值,<market>
但使用两个属性_id
和type
. 我想写一个条件,&&
这样我就可以得到每个价格标签的唯一值,例如 where MARKET _ID = 1 && TYPE = "A"
。
作为参考,请在下面找到 XML:
<publisher>
<book _id = "0">
<author _id="0">Dev</author>
<publish_date>24 Feb 1995</publish_date>
<description>Data Structure - C</description>
<market _id="0" type="A">
<price>45.95</price>
</market>
<market _id="0" type="B">
<price>55.95</price>
</market>
</book>
<book _id="1">
<author _id = "1">Ram</author>
<publish_date>02 Jul 1999</publish_date>
<description>Data Structure - Java</description>
<market _id="1" type="A">
<price>145.95</price>
</market>
<market _id="1" type="B">
<price>155.95</price>
</market>
</book>
</publisher>
以下代码工作正常
import scala.xml._
object XMLtoCSV extends App {
val xmlLoad = XML.loadFile("C:/Users/sharprao/Desktop/FirstTry.xml")
val price = (((xmlLoad \ "book" filter { _ \ "@_id" exists (_.text == "0")}) \ "market" filter { _ \ "@_id" exists (_.text == "0")}) \ "price").text //45.95
val price1 = (((xmlLoad \ "book" filter { _ \ "@_id" exists (_.text == "1")}) \ "market" filter { _ \ "@_id" exists (_.text == "1")}) \ "price").text //155.95
println("price = " + price)
println("price1 = " + price1)
}
输出是:
price = 45.9555.95
price1 = 145.95155.95
我上面的代码给了我两个值,因为我无法设置 && 条件。
- 除了过滤我可以使用的 SCALA 函数之外,请提供建议。
- 还让我知道如何获取所有属性名称。
- 如果可能,请告诉我从哪里可以阅读所有这些 API。
提前致谢。