有什麼辦法告訴Transformer(在使用DOM序列化XML文檔時),忽略獨立屬性?使用Java DOM + Transformer時,省略xml聲明中的獨立屬性。
最好不使用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/>
爲什麼這甚至工作?根據規範: https://www.w3.org/TR/2004/REC-xml-20040204/#sec-rmd 「如果有外部標記聲明但沒有獨立的文檔聲明,則值」no 「 假設。」 這個答案:https://stackoverflow.com/questions/5578645/what-does-the-standalone-directive-mean-in-xml還指出,如果缺少獨立屬性,則假定爲「否」。那麼怎麼來document.setXmlStandalone(true);刪除屬性? – mdzh 2017-06-21 13:58:41