我有我正在嘗試使用的XML Scala XML API。我有XPath查詢來從XML標籤中檢索數據。我想從<market>
中檢索<price>
標記值,但使用了兩個屬性_id
和type
。我想寫一個&&
的條件,以便我爲每個價格標籤獲得一個唯一值,例如,其中MARKET _ID = 1 && TYPE = "A"
。使用具有多個屬性的scala-xml API進行解析
對於低於參考下面的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。
在此先感謝。
我很感謝您的解決方案,但沒有編寫函數我們可以做到 - 有沒有任何SCALA函數可以適應這種情況。 –
還有一件事,我已經與你分享了一個樣本XML。但我的xml非常大。幾乎200個標籤意味着我必須編寫200個函數,因爲屬性對於不同的標籤是不同的,從一個到六個不同的屬性。我想我必須編寫6個函數,並且必須更改參數。 –
@PardeepSharma用一些標籤的樣本問另一個問題。 – ashawley