对于某个应用程序(通过XMPP PubSub项有效负载序列化和反序列化对象以进行传输),我需要创建XML片段 - 这是我必须省略文档声明。
我正在使用org.xmlpull.v1.XmlSerializer
类;遗憾的是,似乎没有太多关于正确使用它的文档。至少我在其startDocument()
方法上找到的所有文档都不清楚我是否可以跳过调用此方法。至少我发现的所有例子都称之为这种方法(但所有这些例子都解释了如何创建完整的XML文档,没有片段)。
举一个代码示例:
XmlSerializer xmlSerializer = Xml.newSerializer();
StringWriter xmlStringWriter = new StringWriter();
try {
xmlSerializer.setFeature("http://xmlpull.org/v1/doc/features.html#indent-output", true);
xmlSerializer.setOutput(xmlStringWriter);
// xmlSerializer.startDocument("UTF-8", true);
xmlSerializer.startTag(null, "tag-name");
// ...
xmlSerializer.endTag(null, "tag-name";
// xmlSerializer.endDocument();
xmlSerializer.flush();
} catch (IOException e) {
// Hanle exception
}
String xmlOutputString = xmlStringWriter.toString();
这是允许的吗?如果没有,是否还有其他方法可以使用XMLSerializer生成片段而无需解析输出字符串以手动删除文档声明(例如,仅使用null
参数调用startDocument)?
答案 0 :(得分:3)
答案简短来说:不,不需要调用startDocument()
,并且会跳过生成文档声明。