我有这样的XML:
<a>
<b name = "d"value = "1"/>
<b name = "e"value = "2"/>
<b name = "f"value = "3"/>
</a>
我想获取name为e的值。如何使用scala的XML库(导入scala.xml.XML)在scala中执行此操作
我正在尝试这样的事情:
map{line=>{
val rec = line.toString.split("\\^")
var duration = XML.loadString(rec(4))
((duration\\"a"\\"b"\@"name").toString())
}}
但是输出空白
答案 0 :(得分:1)
如果您使用spark,可以使用spark-xml
。在Maven或Sbt
现在您可以直接读取xml作为数据帧并执行操作
import org.apache.spark.sql.SparkSession
import org.apache.spark.sql.functions._
val df = spark.sqlContext.read
.format("com.databricks.spark.xml")
.option("rowTag", "a")
.option("valueTag", "bvalue")
.load("/home/sk/IdeaProjects/TestProjectForDemo/src/main/scala/test.xml")
df.withColumn("b", explode($"b")).where($"b._name" === "e")
.show(false)
输出:
+----------+
|b |
+----------+
|[e,2,null]|
+----------+
希望这有帮助!