我正在尝试使用Java DOM API (而不是SAX)解析XML文档。每当解析器在解析文本节点时遇到与号(&),它就会出错。我猜这是可以通过1)转义,2)编码或3)使用不同的解析器来解决的。
我正在读取一个我无法控制的XML文档,因此我不能准确地确定每次读取文档时“与”号出现在文档中的哪个位置。
我看到的类似问题的答案建议在解析XML时替换实体类型,但我不确定如何才能做到这一点,因为它甚至在遇到XML与符号时都不会进行解析。
任何帮助都将不胜感激。
发布于 2011-10-12 02:38:04
如前所述,XML是错误的(糟糕!):在XML中出现的所有&
(引入字符实体的标记除外)都必须编码为&
。
一些解决方案(基本上就像这篇文章中描述的那样):
对于"hack- it -up“方法,考虑一个单独的输入流--参见Working with Filter Streams --在实际的DOM解析器之前作为过滤器执行:每当遇到&
(它不是字符实体的一部分)时,它就会通过将&
插入到流中来”修复它“。当然,如果XML源代码没有得到正确的基本编码...
祝你编码愉快。
发布于 2011-10-12 09:30:28
“我正在读取一个我无法控制的XML文档”。
不,您正在读取非XML文档。出现错误的原因是,当您读取非XML的内容时,需要XML解析器给出错误。
XML文化是生成格式良好XML的责任在于发送者。您需要更改生成此数据的内容才能正确执行此操作。否则,您可能会忘记XML及其好处,回到私下约定的协议和自定义解析器的混乱世界。
https://stackoverflow.com/questions/7734636
复制