Java XML格式不适用于CDATA

Java XML格式不适用于CDATA,java,xml,Java,Xml,我使用以下代码格式化xml字符串。但如果里面有CDATA组件,它就不起作用了,或者说它工作得很好。有什么想法吗 OutputFormat format = new OutputFormat(document); format.setLineWidth(65); format.setIndenting(true); format.setIndent(2); Writer out = new StringWriter(); XMLSerializer serializer = new XMLSeri

我使用以下代码格式化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>

我认为输出正确:

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

如果生成以下内容:

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


然后您在CDATA部分引入了Wispace,这实际上改变了值。

在我看来,输出是正确的:

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

如果生成以下内容:

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


然后您在CDATA区域中引入了Wispace,这实际上改变了值。

实际上是另一种方式!其实是另一种方式!我认为第二个是更正确的格式,假设CDATA中的换行是因为终端宽度,第二个是CDATA块的正确格式。第一个例子是不正确的。为了在CDATA中打印XML,请看一看我认为第二个格式更正确,假设CDATA中的换行是由于终端宽度的原因,第二个是CDATA块的正确格式。第一个示例不正确。要在CDATA中打印XML,请查看