特定のアプリケーション (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 を呼び出すなど)?