[英]How to remove standalone attribute declaration in xml document?
我目前正在使用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"?>
有没有可以指定的财产?
根据我的阅读,您可以通过在创建DOMSource
之前在Document
上调用以下方法来完成此操作:
doc.setXmlStandalone(true); //before creating the DOMSource
如果将其设置为false
,则无法控制它是否显示 。 所以在Document
上的setXmlStandalone(true)
。 在变换器中如果你想要输出使用OutputKeys
你需要什么“是”或“否”。 如果你在Document
上设置了setXmlStandalone(false)
,无论你在Transformer
设置了什么(如果你设置),你的输出都将是standalone="no"
。
阅读此论坛中的主题
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.