gpt4 book ai didi

java - TransformerHandler 输出 CDATA 部分

转载 作者:太空宇宙 更新时间:2023-11-04 08:30:54 24 4
gpt4 key购买 nike

我正在尝试使用以下代码输出 CDATA 部分。虽然其他声明受到尊重,但 CDATA 部分仍然以纯文本形式出现,没有其封闭标签 (CDATA)。我做错了什么?

    private TransformerHandler getHandler(StringWriter sw) {
SAXTransformerFactory stf = (SAXTransformerFactory)SAXTransformerFactory.newInstance();
TransformerHandler th = null;
th = stf.newTransformerHandler();

th.getTransformer().setOutputProperty(OutputKeys.CDATA_SECTION_ELEMENTS, "{ns1}elem");
th.getTransformer().setOutputProperty(OutputKeys.INDENT, "yes");
th.getTransformer().setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
th.setResult(new StreamResult(sw));
}

最佳答案

尝试重新阅读 OutputKeys.CDATA_SECTION_ELEMENTS 的 JavaDoc 部分:http://docs.oracle.com/javase/6/docs/api/javax/xml/transform/OutputKeys.html#CDATA_SECTION_ELEMENTS

...以及如何指定文字 QName http://docs.oracle.com/javase/6/docs/api/javax/xml/transform/package-summary.html#qname-delimiter 的引用解释

您指定的参数值“{ns1}elem”在我看来并不包含命名空间 URI,而看起来像是命名空间前缀 (ns1)。找出“xmlns:ns1”声明是什么,并将命名空间 URI 包含在文字 QName 中。

示例(假设 ns1 前缀的命名空间声明类似于 xmlns:ns1="http://softee.org",您应该指定;

setOutputProperty(OutputKeys.CDATA_SECTION_ELEMENTS, "{http://softee.org}elem");

关于java - TransformerHandler 输出 CDATA 部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7544066/

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