StringWriter writer = new StringWriter();
XmlSerializer serializer = new KXmlSerializer();
serializer.setOutput(writer);
serializer.startDocument(null, null);
serializer.setFeature("http://xmlpull.org/v1/doc/features.html#indent-output", true);
// Creating XML
serializer.endDocument();
String xmlString = writer.toString();
在上述环境中,是否有任何标准 API 可用于删除 XML header <?xml version='1.0' ?>
还是您建议通过字符串操作:
if (s.startsWith("<?xml ")) {
s = s.substring(s.indexOf("?>") + 2);
}
想要 xmlString
中的输出没有 XML header 信息 <?xml version='1.0' ?>
.
最佳答案
理想情况下,如果需要,您可以进行 API 调用以排除 XML header 。 KXmlSerializer
似乎并不支持这一点(略读代码 here )。如果你有一个 org.w3c.dom.Document
(或者实际上是 javax.xml.transform.Source
的任何其他实现),你可以通过这种方式完成你想要的:
TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer = tf.newTransformer();
transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
StringWriter writer = new StringWriter();
transformer.transform(new DOMSource(doc), new StreamResult(writer));
否则,如果您必须使用 KXmlSerializer
,看起来您将不得不操作输出。
关于java - 从 Java 中的 XML 中删除 XML header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5616452/