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();
Run Code Online (Sandbox Code Playgroud)
在上面的环境中,是否有任何标准API可用于删除XML标头,<?xml version='1.0' ?>或者您是否建议通过字符串操作:
if (s.startsWith("<?xml ")) {
s = s.substring(s.indexOf("?>") + 2);
}
Run Code Online (Sandbox Code Playgroud)
想要在xmlString没有XML标题信息的情况下输出<?xml version='1.0' ?>.
Whi*_*g34 81
理想情况下,如果需要,您可以进行API调用以排除XML标头.KXmlSerializer虽然看起来不支持这个(在这里略过代码).如果您有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));
Run Code Online (Sandbox Code Playgroud)
否则,如果你必须使用KXmlSerializer它,看起来你将不得不操纵输出.
Mic*_*Kay 18
例如,如果使用JAXP序列化程序,则可以访问XSLT中定义的所有输出属性omit-xml-declaration="yes".你可以用"身份变换器"的形式得到这个,你可以在transformerFactory.getTransformer()没有参数的情况下使用它来调用它setOutputProperty().
| 归档时间: |
|
| 查看次数: |
31664 次 |
| 最近记录: |