我正在开发一个Java程序,它读取HTML代码,解析HTML,获取内容(人类可读的文本)并将其存储在XML文件中。有时,HTML代码包含'
,"
个字符(以及其他字符),但有时它们也分别写为'
和"
。
我按照适当的程序构建XML。我使用Document
和Element
类,并使用Transformer
,DomSource
和StreamResult
类创建XML文件。
问题是,保存文件后,我发现&
符号已替换为&
。我知道这是对的。但它也将'
转换为&&apos
!
我还尝试将Document
对象转换为String
对象,然后将该字符串传递给StringEscapeUtils.unescapeXml(String s)
方法,以保持XML实体的完整性。但是,它不会将&
实体转换为&
,从而导致XML文件无效。
(我已将OutputKeys.ENCODING
设置为" UTF-8"并将OutputKeys.METHOD
设置为" xml&#34 ;.)
答案 0 :(得分:1)
问题出在HTML解析上,而不是XML输出。在HTML& amp;是一个单引号,所以当有&在HTML中,您的解析器应该将它作为单引号提供给您。
你使用什么解析器?像Jsoup这样的流行解析器不会出错。