我正在使用Java创建一个xml,然后将其转换为String。 xml声明如下:
DocumentBuilderFactory dbfac = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = dbfac.newDocumentBuilder();
Document doc = docBuilder.newDocument();
doc.setXmlVersion("1.0");
为了将文档转换为String,我包含以下声明:
TransformerFactory transfac = TransformerFactory.newInstance();
Transformer trans = transfac.newTransformer();
trans.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "no");
trans.setOutputProperty(OutputKeys.VERSION, "1.0");
trans.setOutputProperty(OutputKeys.ENCODING,"UTF-8");
trans.setOutputProperty(OutputKeys.INDENT, "yes");
然后我进行转换:
StringWriter sw = new StringWriter();
StreamResult result = new StreamResult(sw);
DOMSource source = new DOMSource(doc);
trans.transform(source, result);
String xmlString = sw.toString();
问题是在XML声明属性中,包含了独立属性,我不希望这样,但我希望显示版本和编码属性:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
是否有可以指定的财产?
答案 0 :(得分:42)
根据我的阅读,您可以在创建Document
之前在DOMSource
上调用以下方法来执行此操作:
doc.setXmlStandalone(true); //before creating the DOMSource
如果您将其设置为false
,则无法控制它显示。 setXmlStandalone(true)
Document
OutputKeys
。在变换器中,如果您希望输出使用setXmlStandalone(false)
,则需要“是”或“否”。如果Document
standalone="no"
Transformer
,无论您在{{1}}中设置了什么(如果已设置),您的输出将始终为{{1}}。