gpt4 book ai didi

java - 将 Java DOM 文档序列化为 XML : Add CData Elements

转载 作者:行者123 更新时间:2023-11-30 08:23:59 25 4
gpt4 key购买 nike

我正在使用 SAX 解析器构建 XML DOM 文档。我已经编写了处理 startCDATA 的方法和 endCDATA方法和 endCDATA方法我像这样构造一个新的 CDATA 部分:

public void onEndCData() {
xmlStructure.cData = false;
Document document = xmlStructure.xmlResult.document;
Element element = (Element) xmlStructure.xmlResult.stack.peek();
CDATASection section = document.createCDATASection(xmlStructure.stack.peek().characters);
element.appendChild(section);
}

当我将其序列化为 XML 文件时,我使用以下行来配置转换器:

transformer.setOutputProperty(OutputKeys.CDATA_SECTION_ELEMENTS, "con:setting");

从来没有<![CDATA[标 checkout 现在我的 XML 文件中,所有的 backets 都转义为 &gt;&lt; ,这对于其他工具来说没有问题,但对于需要读取文件的人来说却是个问题。我确信“con:setting”标签是正确的。那么命名空间前缀可能有问题吗?

还有 this question表示不可能省略 CDATA_SECTION_ELEMENTS 属性并且通常在不转义数据的情况下序列化所有 CDATA 节点。该信息是否正确,或者答案的作者是否不知道其他方法?

更新:我的代码似乎有错误。使用 document.createCDATASection() 时函数,然后使用 Transformer 序列化代码,它确实输出 CDATA 标签,即使不使用 CDATA_SECTION_ELEMENTS变压器中的属性。

最佳答案

看起来你有一个命名空间感知的 DOM。 docs假设您需要提供 Qualified Name Representation元素的:

private static String qualifiedNameRepresentation(Element e) {
String ns = e.getNamespaceURI();
String local = e.getLocalName();
return (ns == null) ? local : '{' + ns + '}' + local;
}

因此该属性的值将采用 {http://your.conn.namespace}setting 的形式。

关于java - 将 Java DOM 文档序列化为 XML : Add CData Elements,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23286568/

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