我有一个大致如下的XML文件:
<customer>
<name>Müller</name>
</customer>
我使用以下代码解析文件:
File xmlFile = new File("file.xml");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(xmlFile)
并获得实体ü
被引用但未声明的错误。我想要的是正在读取条目但不以任何方式解析,我想获得文件中写入的值。
我该怎么做?
答案 0 :(得分:4)
我尝试过设置:
dbFactory.setExpandEntityReferences(false);
但这不起作用。
如果您无法修改xml内容(使用UTF-8,xml可以包含ummut),您可以添加DTD:
<!DOCTYPE definition [
<!ENTITY uuml "ü">
]>
如果无法修改xml文件,请加载xml内容并添加DTD:
String dtd = "<!DOCTYPE definition [\n<!ENTITY uuml 'ü'>\n]>\n",
contents = <load xmlFile>;
Reader reader = new StringReader(dtd + contents);
InputSource src = new InputSource(reader);
Document doc = dBuilder.parse(src);