我在 Weblogic 上有一个 Web 应用程序,它:
1. 从数据库中读取 XML
2. 对其进行解析
3. 添加新的部分
源 XML 包含 CDATA 部分。
<?xml version="1.0" encoding="UTF-8" ?>
<script type="calcscript"></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 包含旧的 Java 库,不支持 CDATA 部分。
附言:当我在 Tomcat 服务器或 Java 应用程序上运行应用程序时,一切正常。