2012-04-17 17 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、アンプ、APOS)

それにも関わらず、どのように私は、 "ノード" の要素にそれをエスケープせず、それを逃れることができます。

<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

デフォルトのXMLReader実装ではなく、寛大なHTML XMLReaderを使用します。 tag soupまたはhtml tidyのようなものです。

関連する問題