Scala Xml 解析:如何获取具有不包括子节点的属性的节点
Scala Xml Parsing: How to get Node with a attribute excluding subnode
我有一个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>
我需要提取节点 "Product" 及其属性 "name"。但是("Product" 的子节点)"Property" 也有属性 "name"。
我写了一段代码如下:
val xml = XML.loadFile("product.xml")
val names = (Head \ Company \ prodcuts \ product \ "@name").map { _.text }
但是这个 returns 产品名称列表和 属性 两者。
我如何 select 只有产品名称?
谢谢
你可以这样做:
( xml \ "Product").map( n => n \@ "name").foreach(println)
使用双反斜杠 \
意味着您想要 select 所有序列元素及其所有子序列。
您可以使用单个反斜杠 \
来仅选择序列元素。但是只有当你有一个子元素而不是一个列表时它才有效。
我的解决方案是遍历所有 Product
元素并获取它的相关序列属性。
我有一个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>
我需要提取节点 "Product" 及其属性 "name"。但是("Product" 的子节点)"Property" 也有属性 "name"。 我写了一段代码如下:
val xml = XML.loadFile("product.xml")
val names = (Head \ Company \ prodcuts \ product \ "@name").map { _.text }
但是这个 returns 产品名称列表和 属性 两者。 我如何 select 只有产品名称? 谢谢
你可以这样做:
( xml \ "Product").map( n => n \@ "name").foreach(println)
使用双反斜杠 \
意味着您想要 select 所有序列元素及其所有子序列。
您可以使用单个反斜杠 \
来仅选择序列元素。但是只有当你有一个子元素而不是一个列表时它才有效。
我的解决方案是遍历所有 Product
元素并获取它的相关序列属性。