在使用Java DOM+;变压器。

在使用Java DOM+;变压器。,java,xml,dom,Java,Xml,Dom,有没有办法告诉转换器(在使用DOM序列化XML文档时)忽略standalone属性 最好不使用hack,即匹配整个XML声明,然后手动预处理它 我当前的代码: Transformer transformer = TransformerFactory.newInstance().newTransformer(); transformer.setOutputProperty(OutputKeys.INDENT, "yes"); transformer.setOutputProperty(Output

有没有办法告诉转换器(在使用DOM序列化XML文档时)忽略standalone属性

最好不使用hack,即匹配整个XML声明,然后手动预处理它

我当前的代码:

Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty(OutputKeys.STANDALONE, "yes"); //Note nothing is changed

StreamResult result = new StreamResult(new StringWriter());
DOMSource source = new DOMSource(document);
transformer.transform(source, result);
 return result.getWriter().toString();
当前:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<someElement/>

预期:

<?xml version="1.0" encoding="UTF-8">
<someElement/>

算出了

而不是改变变压器

我将以下内容添加到document对象中

  document.setXmlStandalone(true);

您使用的是哪个Java版本和/或哪个XSLT转换器?对于Sun Java 1.6.0_16,只有在设置输出属性且内容正确的情况下,才会在输出文档中设置standalone属性。

document.setXmlStandalone(true/false)工作正常。

您必须结合使用:

doc.setXmlStandalone(true)


transformer.setOutputProperty(OutputKeys.STANDALONE,“是”);//这是用来显示独立标签的

我在使用Eclipse4.5(Mars)中的内置Java8SE时也遇到了同样的问题。为什么这样做会奏效呢?根据规范:“如果有外部标记声明,但没有独立的文档声明,则假定值为“否”。此回答:还说明如果缺少独立属性,则假定值为“否”。那么document.setXmlStandalone(true)是怎么回事;删除属性?最后是有效答案!:D