有没有办法强制JAVA在Elements中打印空CDATA?

时间:2014-02-04 13:22:32

标签: java xml cdata

我知道它不合适但公司“在另一方面”,由于某些原因,迫使我们改变这样的代码:

<POZ />

<POZ><!CDATA[[]]></POZ>

我找到了Forcing Empty CDATA Elements,但它需要附加一个额外的XSL文件,这是我想要避免的。

我试过琐碎的

Element poz = new Element("POZ");
CDATA cdataContent = new CDATA("");
poz.addContent(cdataContent);

但它 - 当然 - 生成简单的

<POZ />

不是我期望的扩展版本......

有没有办法强制JAVA在空元素中生成这些CDATA部分?

2 个答案:

答案 0 :(得分:2)

理想情况下,没有XML应用程序应该关注CDATA转义和普通文本之间的区别,或者自终止空元素与使用单独的open和close标记表示的元素之间的区别。我强烈建议打败那些使用本文档的人,让他们放弃这个要求。

DOM不认为空文本节点的概念有意义,无论它是否是CDATA部分。我不确定是否有任何其他XML API会让你生成一个空的CDATA,但如果答案是否定的话,我不会感到惊讶。

如果你绝对需要这个,我建议你写一个postprocesing阶段,在文件上做一个简单的字符串替换,以强制它进入你需要的形式。

答案 1 :(得分:0)

如果您无法说服收件人正确使用XML是个好主意,那么就发出

<POZ>[[[[[[CDATA]]]]]]</POZ>

来自Java应用程序,并使用sed或类似方法对其进行后处理。