gpt4 book ai didi

Java XML 转换器 - 在输出中保留注释

转载 作者:行者123 更新时间:2023-12-02 12:19:43 35 4
gpt4 key购买 nike

我需要修改 XML 文件,但输出中的所有注释都已被删除。我搜索并认为我需要使用 Transformer.setProperty() 函数,但不知道如何使用它。任何帮助或提示将非常感激。请对我详细讲解 XML 术语,因为我是 XML 新手。

谢谢

下面是我想要保留的部分,从 XML 文件的开头开始:

<!DOCTYPE ProductDataeXchangePackage [
<!-- DTD for IPC-2571
Public Identifier: "-//IPC//DTD 2571 200111//EN"
Official Location: http://webstds.ipc.org/2571.dtd -->

<!ELEMENT AdditionalAttribute EMPTY>

<!ATTLIST AdditionalAttribute name CDATA #REQUIRED
value CDATA #REQUIRED
dimension CDATA #IMPLIED
dataType (String |
Boolean |
Float |
Double |
Decimal |
DateTime |
Binary |
UriReference |
Other ) #IMPLIED
dataTypeOther CDATA #IMPLIED
description CDATA #IMPLIED >
<!ELEMENT AdditionalAttributes (AdditionalAttribute+)>
]>

<?pdx_version 1.0?>
<?generated_by Oracle/Extract/9.3.4/63?>
.....

这是我的代码,它将其重写到另一个文件:

TransformerFactory transfac = TransformerFactory.newInstance();
Transformer trans = null;
try {
trans = transfac.newTransformer();
-->trans.setOutputProperty(OutputKeys.CDATA_SECTION_ELEMENTS, "??")<-- ;
} catch (TransformerConfigurationException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
StringWriter sw = new StringWriter();
StreamResult result = new StreamResult(sw);

DOMSource source = new DOMSource(doc);
try {
trans.transform(source, result);
} catch (TransformerException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
String xmlString = sw.toString();
OutputStream f0;
byte buf[] = xmlString.getBytes();
f0 = new FileOutputStream("pdx1.xml");
for(int n=0;n<buf.length;n++) {
f0.write(buf[n]);
}
f0.close();
buf = null;

最佳答案

DTD 不是 XSLT/XPath 数据模型的一部分,因此 XSLT 转换不会保留它。有一些方法可以解决这个问题,但它们依赖于某些工具或扩展。当您使用 Java 并且仅使用默认转换器来序列化某些 DOM 树时,您可能首先需要检查 LSSerializer ( https://docs.oracle.com/javase/8/docs/api/org/w3c/dom/ls/LSSerializer.html ) 是否比默认 Transformer 做得更好> 输出 DTD 和/或 CDATA 节节点。

关于Java XML 转换器 - 在输出中保留注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45869124/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com