对于给定的XPath表达式,我正在尝试从XML文件提取数据并将其转换为JSON。
示例XML输入数据:
<CATALOG>
<PLANT>
<COMMON>Bloodroot</COMMON>
<BOTANICAL NAME="Sanguinaria canadensis" LIGHT="Rare Shady"/>
<PRICE>3.99</PRICE>
</PLANT>
<PLANT>
<COMMON>Columbine</COMMON>
<BOTANICAL NAME="Aquilegia canadensis" LIGHT="Shady" />
<PRICE>5.99</PRICE>
</PLANT>
</CATALOG>
这是我想出的代码。
import scala.xml.XML.loadFile
import org.json4s.Xml.toJson
import org.json4s.jackson.Serialization.write
val xmlData = loadFile(xmlFilePath)
val nodeSeq = xmlFile \\ "CATALOG" \\ "PLANT" \\ "COMMON"
val jsonData = toJson(nodeSeq)
val jsonString = write(json)
Output:
{"COMMON":["Bloodroot","Columbine"]}
我的问题是,我正在手动将XPath表达式转换为 scala.xml 库所需的格式。
我发现很少的库可以在给定通用XPath表达式的情况下提取数据,但是在将提取的数据转换为JSON输出(如上述格式)时遇到困难。
有没有可以接受通用XPath表达式从XML文件提取数据的scala库, 像上面那样转换为JSON格式很容易?
为您提供更多示例,
For the above input XML data,
1. XPath expression
/CATALOG/PLANT/COMMON[1]
output:
{"COMMON":"Bloodroot"}
2. XPath expression
/CATALOG/PLANT[PRICE<5.00]/COMMON
output:
{"COMMON":"Bloodroot"}
3. XPath expression
//BOTANICAL[@NAME="Sanguinaria canadensis"]
output:
{"BOTANICAL" : {"NAME": "Sanguinaria canadensis", "LIGHT": "Rare Shady"}}
是否有现有的Scala库,已经做到了?如果没有,您将采取什么方法? (现在,我正在考虑使用正则表达式的解决方案,不要认为这是最佳选择) 感谢您的帮助