【发布时间】:2015-09-01 06:08:39
【问题描述】:
我在 weblogic 上有 webapp,其中
1.从数据库中读取XML
2.解析它
3.添加新部分
源 XML 具有 CDATA 部分
<?xml version="1.0" encoding="UTF-8" ?>
<script type="calcscript">
<![CDATA[ some data ]]>
</script>
当我解析 xml 时
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document xml = builder.parse(new ByteArrayInputStream(bytes));
它会删除 CDATA 部分!
转回字符串后
Transformer transformer = TransformerFactory.newInstance().newTransformer();
StringWriter sw = new StringWriter();
Result output = new StreamResult(sw);
Source input = new DOMSource(xml);
transformer.transform(input, output);
我得到这样的 XML
<?xml version="1.0" encoding="UTF-8" ?>
<script type="calcscript">
some data
</script>
为什么要删除 CDATA 部分?可能是 weblogic 包含不支持 CDATA 部分的旧 Java 库。
附:当我在 tomcat 服务器或 java 应用程序上运行应用程序时,一切正常
【问题讨论】:
-
我建议您应该做的第一件事是找出它实际上是在解析部分还是在格式化部分。查看已解析文档中的所有节点。