java—为什么apache hadoop配置模块忽略cdata?

0dxa2lsx  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(465)

我在用 core-site.xml 文件,并用 org.apache.hadoop.conf.Configuration 班级。
似乎正常的转义字符串正在正确加载。然而,cdata语句是空的,根本没有被解析。 core-site.xml :

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <property>
          <name>cdata.example</name>
          <value><![CDATA[Joe's <&> Bar]]></value>
    </property>
    <property>
          <name>escaped.example</name>
          <value>Joe&#39;s &lt;&amp;&gt; Bar</value>
    </property>
</configuration>
``` `Main.java` :

import org.apache.hadoop.conf.Configuration;

import java.net.MalformedURLException;
import java.io.File;
import java.net.URI;

public class Main {
public static void main(String[] args) {
Configuration conf = new Configuration();
File conffile = new File("core-site.xml");
try {
conf.addResource(conffile.toURI().toURL());
System.out.println(conf.get("cdata.example"));
System.out.println(conf.get("escaped.example"));
} catch(MalformedURLException e) {
System.out.println("MalformedURLException");
}
}
}

输出为:
无效的
乔的酒吧
为什么?根据xml标准,cdata不是合适的转义方案吗?
fgw7neuy

fgw7neuy1#

hadoop版本2.8.x以上正确解析cdata。在hadoop 2.9及更高版本中,解析器已从基于dom的解析器documentbuilder中切换出来(请参见https://issues.apache.org/jira/browse/hadoop-14501)支持基于stax的解析器fasterxml的woodstox(参见https://issues.apache.org/jira/browse/hadoop-14216 以及https://issues.apache.org/jira/browse/hadoop-14501)以提高xml解析性能。
提出https://issues.apache.org/jira/browse/hadoop-16749 它的目标是使包含2.9.3、3.1.4、3.2.2、3.3.0和更高版本的行再次正确解析cdata。

相关问题