La production codé en UTF-8 XML en Java

C'est le code que j'utilise

try {
String str = "\uC3BC and \uC3B6 and <&> für";

DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document doc = builder.newDocument();
Element root = doc.createElement("test");
root.setAttribute("attribute", str);
doc.appendChild(root);

DOMSource domSource = new DOMSource(doc);
//FileOutputStream out = new FileOutputStream("test.xml");
Writer out = new OutputStreamWriter(new FileOutputStream("test.xml"), "UTF8");

Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
transformer.transform(domSource, new StreamResult(out));

out.close();
} catch (Exception e) {
e.printStackTrace();
}

De sortie est

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<test attribute="쎼 and 쎶 and &lt;&amp;&gt; für"/>

Je veux à la sortie

attribute="&#xc3bc and &#xc3b6 ..."

Comment puis-je y parvenir ?

J'utilise la version 1.6 de Java-20

Ceci est similaire à Produit est valide XML avec Java et l'encodage UTF-8

  • Quel est le problème?
  • Pourquoi voulez-vous des références à des caractères à la place des caractères eux-mêmes? Puisque vous utilisez UTF-8, vous n'en avez pas besoin (et il porte exactement les mêmes renseignements de toute façon).
  • Mes excuses, je n'ai pas d'état, ma question clairement. Je voulais échapper.
  • Je l'ai eu, mais pourquoi voulez-vous échapper? Les deux formes sont exactement équivalents, il ne devrait pas faire une différence.
InformationsquelleAutor bouncyrabbit | 2011-09-30