XmlSerializer
est probablement ce que vous voulez. Utilisez-le pour créer le document XML "externe"; vous pouvez donner à son text(...)
method une chaîne XML intacte et il fera l'échappement pour vous. Vous pouvez faire le même genre de chose avec l'API DOM en utilisant setTextContent si vous voulez vraiment construire une arborescence DOM puis la sauvegarder en XML. Comme vous semblez le savoir, n'importe quel analyseur XML décodera correctement les références d'entité lorsque vous demanderez le retour du texte.
Si vous voulez vraiment écrire votre propre code de construction XML, vous pouvez essayer d'insérer la bibliothèque Apache commons-lang dans votre projet pour qu'elle soit StringEscapeUtils class. Je ne suis pas au courant de quoi que ce soit qui fera juste la substitution d'entité sans construire de vrai XML dans l'API Android de base.
Pour un exemple, essayez ceci:
XmlSerializer xs = Xml.newSerializer();
StringWriter sw = new StringWriter();
xs.setOutput(sw);
xs.startDocument(null, null);
xs.startTag(null, "foo");
xs.text("<bar>this is some complete XML document you had around before</bar>");
xs.endTag(null, "foo");
xs.endDocument();
Log.v("XMLTest", "Generated XML = " + sw.toString());
Il ressemble à ce que vous êtes réellement chercher à faire est _escape_ XML; Autrement dit, remplacez tous les caractères spéciaux XML par leurs entités XML respectives. Est-ce correct? –
oui, c'est exact. Im en utilisant URLEncoder de java.net pour le moment (après avoir écrit cette question). Y a-t-il un problème avec ça? – MalcomTucker