2012-04-17 171 views
1

我有我转换成Dom4J文档的HTML数据。转义XML字符的最佳实践?

我遇到了一个错误:

org.dom4j.DocumentException: Error on line 1 of document : Reference is not allowed in prolog. Nested exception: Reference is not allowed in prolog. 
    at org.dom4j.io.SAXReader.read(SAXReader.java:482) 
    at org.dom4j.DocumentHelper.parseText(DocumentHelper.java:278) 
    at MonTest.main(MonTest.java:21) 
Nested exception: 
    org.xml.sax.SAXParseException: Reference is not allowed in prolog. 

这是一个性格“&”,我需要逃避到&放大器;以建立文件。

在XML中,我们似乎需要转义5个字符:(GT,LT,QUOT,安培,者)

然而,如何可以逃避它,而不脱离其放入“节点”元素:

<div id="test" class='toto'>A&A<A"A</div> 

应该给:

<div id="test" class='toto'>A&amp;A&lt;A&quot;A</div> 

,而不是

&lt;div id=&quot;test&quot; class=&apos;toto&apos;&gt;A&amp;A&lt;A&quot;A&lt;/div&gt; 

谢谢

回答

7

逃亡串增加XML文档之前。使用Apache Commons Lang中的StringEscapeUtils.escapeXml方法。使用一些库来构建XML http://code.google.com/p/joox/

2

我会看看使用宽松的HTML XMLReader而不是默认的XMLReader实现。像tag souphtml tidy