Scala的XML解析:如何获得节点与属性不包括子节点
问题描述:
我有一个XML如下:Scala的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>
我需要提取节点“产品”,其“name”属性。但是(“产品”的子节点)“属性”也有属性“名称”。 我写了代码如下:
val xml = XML.loadFile("product.xml")
val names = (Head \\ Company \\ prodcuts \\ product \\ "@name").map { _.text }
但是,这两种产品的返回和财产的名称的列表。 我如何只选择产品名称? 感谢
答
你可以水木清华这样的:
(xml \\ "Product").map(n => n \@ "name").foreach(println)
使用双反斜线\\
意味着你要选择所有序列的元素和它所有子的。 您可以使用单个反斜杠\
仅选择序列元素。但它只适用于你有一个子元素而不是列表。
我的解决方案是遍历所有Product
元素并获取它的相关序列属性。