Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用带有CDATA部分的转换器的Java格式xml_Java_Xml_Format - Fatal编程技术网

使用带有CDATA部分的转换器的Java格式xml

使用带有CDATA部分的转换器的Java格式xml,java,xml,format,Java,Xml,Format,我想将字符串格式化为xml,这是我的代码: Source xmlInput = new StreamSource(new StringReader(input)); StringWriter stringWriter = new StringWriter(); StreamResult xmlOutput = new StreamResult(stringWriter); TransformerFactory transformerFactory = TransformerFactory.new

我想将字符串格式化为xml,这是我的代码:

Source xmlInput = new StreamSource(new StringReader(input));
StringWriter stringWriter = new StringWriter();
StreamResult xmlOutput = new StreamResult(stringWriter);
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", String.valueOf(4));
transformer.transform(xmlInput, xmlOutput);
这是我的绳子

 <a><attr name="a1">this is a test</attr><attr name="a2"><![CDATA[this is a test inside cdata part]]></attr></a>
这是一个测试
输出

<?xml version="1.0" encoding="UTF-8"?>
<a>
    <attr name="a1">this is a test</attr>
    <attr name="a2"><![CDATA[this is a test inside cdata part]]></attr>
</a>

这是一个测试
渴望的

<?xml version="1.0" encoding="UTF-8"?>
<a>
    <attr name="a1">
        this is a test
    </attr>
    <attr name="a2">
        <![CDATA[this is a test inside cdata part]]>
    </attr>
</a>

这是一个测试

我希望每个新标签都以新行开始。

规范中没有定义OutputKeys.INDENT的精确效果。然而,XSLT2.0版本的规范明确规定,缩进必须只在开始标记之前或结束标记之后添加空格,换句话说,非空格文本节点的值永远不会更改

顺便说一句,规范中也没有定义CDATA将在JAXP身份转换中保留,对此我有点惊讶