我正在尝试使用Java DOM API(而不是SAX)解析XML文档。每当解析器在解析文本节点时遇到&符号(&)时,它就会出错。我猜这是可解决的1)转义,2)编码或3)使用不同的解析器。
我正在阅读一份我无法控制的XML文档,因此每次阅读时都无法准确识别文档中的&符号。
我在类似问题上看到的答案建议在解析XML时替换实体类型,但我不确定我是如何做到这一点的,因为它在遇到XML&符号时甚至都不会解析。
任何帮助将不胜感激。
答案 0 :(得分:4)
如上所述,XML格式错误(哎呀!):XML中出现&
的所有内容(除了引入字符实体的标记[?])必须编码为&
。
一些解决方案(基本上与帖子中描述的一样!):
对于“hack-it-up”方法,请考虑单独的输入流 - 请参阅Working with Filter Streams - 作为过滤器之前执行到实际的DOM解析器:每当遇到&
(不是字符实体的一部分),它通过将&
插入流来“修复它”。当然,如果XML源没有得到正确的基本编码......
快乐的编码。
答案 1 :(得分:2)
“我正在阅读一份我无法控制的XML文档”。
不,您正在阅读非XML文档。您收到错误的原因是,当您阅读不是XML的内容时,XML解析器需要给您一个错误。
XML文化是生成格式良好的XML的责任在于发送者。您需要更改生成此数据的任何内容才能正确执行此操作。否则,你可能会忘记XML及其好处,然后回到私人约定的协议和自定义解析器的混乱世界。