我有一个大致如下所示的
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)
并得到实体& uuml的错误;被引用但未声明.我想要的是正在读取条目但不以任何方式解析,我想获得文件中写入的值.
我怎么做?
解决方法
我尝试过设置:
dbFactory.setExpandEntityReferences(false);
但这不起作用.
如果你不能修改你的xml内容(使用UTF-8,xml可以包含你的umlaut),你可以添加一个DTD:
<!DOCTYPE definition [ <!ENTITY uuml "ü"> ]>
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);