Spark读取XML时'转为'、&转为&的原因咨询
问题解答
这是XML解析的标准行为,和com.databricks.spark.xml的解析逻辑直接相关:
- XML里的实体引用(像
&、'这类)本身就是用来表示特殊字符的转义序列,解析器会自动将它们还原成对应的原始字符。 '属于两层转义:首先&会被解析成&,剩下的apos;组合成',接着这个序列再被解析成';同理&会先解析成&,最终还原成&。com.databricks.spark.xml底层依赖的XML解析库(通常是Jackson XML或SAX解析器)默认开启了实体解析功能,所以会自动完成这些转义还原操作。
如果想保留原始的实体引用字符串,可以尝试添加解析选项:
var df = spark.read .format("com.databricks.spark.xml") .option("rootTag", "rootTag") .option("rowTag", "rowTag") .option("disableEntityResolution", "true") // 禁用实体解析 .schema(mySchema) .load(inputFile)
内容的提问来源于stack exchange,提问作者Zuzu
相关产品推荐
相关产品推荐

