为什么转换后DocType为null?

时间:2016-12-16 12:42:34

标签: java xml doctype

我收到了一份文档finalDocument,想要设置与输入文档DocType相同的xmlDocument。我就是这样做的:

finalDocument = icBuilder.parse(new InputSource(new ByteArrayInputStream(xmlString.getBytes("UTF-8"))));

Transformer transformer = TransformerFactory.newInstance().newTransformer();

DocumentType doctype = xmlDocument.getDoctype();

StringWriter writer = new StringWriter();

transformer.setOutputProperty(OutputKeys.DOCTYPE_SYSTEM, doctype.getSystemId());
transformer.setOutputProperty(OutputKeys.DOCTYPE_PUBLIC, doctype.getPublicId());    

transformer.transform(new DOMSource(finalDocument), new StreamResult(writer));

但是,由于某些原因,DocType的{​​{1}}未设置。我没有例外或任何事情 - 它只是finalDocument

知道我做错了吗?

顺便说一下:nulldoctype.getSystemId()不为空且无效。

1 个答案:

答案 0 :(得分:1)

您的finalDocument变量作为源传递给transform方法:

void javax.xml.transform.Transformer.transform(Source xmlSource, Result outputTarget) throws TransformerException

转换的结果放在第二个参数中。所以我希望您使用setOutputProperty设置的docType将被放置在目标上,这是您的编写者对象。