2010-09-10 81 views
0

我正在使用以下代碼來格式化xml字符串。但它不起作用,如果它內部有CDATA組件,無論如何它工作正常。有任何想法嗎?XML格式不適用於CDATA

OutputFormat format = new OutputFormat(document); 
format.setLineWidth(65); 
format.setIndenting(true); 
format.setIndent(2); 
Writer out = new StringWriter(); 
XMLSerializer serializer = new XMLSerializer(out, format); 
serializer.serialize(document); 
return out.toString(); 

編輯:不低於正確格式化XML:

<named-query name="aaaa"> 
    <query> 
    <![CDATA[ 
     something 
    ]]> 
    </query> 
</named-query> 

它打印:

<named-query name="aaaa"> 
    <query><![CDATA[ 
asasasasasasasa 
]]></query> 
</named-query> 
+3

什麼不行?究竟? – Oded 2010-09-10 19:36:56

+2

我相信,第二個是更正確的格式,假設CDATA中的換行符是因爲終端寬度 – aperkins 2010-09-10 21:58:09

+0

第二個是正確的格式爲CDATA塊。第一個例子是不正確的。 – jcolebrand 2010-10-12 21:46:50

回答

3

輸出看起來正確的對我說:

<named-query name="aaaa"> 
    <query><![CDATA[ 
asasasasasasasa 
]]></query> 
</named-query> 

如果產生如下:

<named-query name="aaaa"> 
    <query> 
     <![CDATA[ 
      asasasasasasasa 
     ]]> 
    </query> 
</named-query> 

那麼你已經介紹withspace到CDATA節,這實際上是改變值。

+0

其實它是另一種方式! – fastcodejava 2010-09-10 21:16:12