我有一个xml,如下所示:
<Head>
<Company>
<Props>
</Props>
<Config>
</Config>
<Products>
<Product type="Random" name="xyz">
<Property name="asd" value="asd"/>
</Product>
<Product type="Random1" name="xyz1">
<Property name="asd1" value="asd1"/>
</Product>
<Product type="Random2" name="xyz">
<Property name="asd2" value="asd2"/>
</Product>
</Products>
</Company>
</Head>
我需要提取节点"产品"及其属性"名称"。但是("产品"的子节点)"属性"也有属性"名称"。我写了一个代码如下:
val xml = XML.loadFile("product.xml")
val names = (Head \ Company \ prodcuts \ product \ "@name").map { _.text }
但这会返回产品和属性的名称列表。如何仅选择产品名称?谢谢
你可以像这样做:
( xml \ "Product").map( n => n @ "name").foreach(println)
使用双反斜杠\
意味着您要选择所有序列元素及其所有子序列。您可以使用单反斜杠仅选择序列元素。但它仅在您有一个子元素但没有列表时才有效。
我的解决方案是遍历所有Product
元素并选取它的相关序列属性。