2012-04-17 170 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