我收到了一份文档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
。
知道我做错了吗?
顺便说一下:null
和doctype.getSystemId()
不为空且无效。
答案 0 :(得分:1)
您的finalDocument
变量作为源传递给transform
方法:
void javax.xml.transform.Transformer.transform(Source xmlSource, Result outputTarget) throws TransformerException
转换的结果放在第二个参数中。所以我希望您使用setOutputProperty
设置的docType将被放置在目标上,这是您的编写者对象。