soyez doux. J'essaie d'utiliser javax.xml.transform.Transformer pour mettre en forme une chaîne xml à indenter/spaceless entre les balises. S'il n'y a pas d'espaces entre les balises, cela fonctionne bien. S'il y en a, cela agit bizarrement. Je vais poster un exemple. J'ai essayé de suivre sur le sujet suivant: http://forums.sun.com/thread.jspa?messageID=2054303#2699961. Sans succès.PrettyPrinting. Ignorer les espaces
code à suivre:
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setIgnoringElementContentWhitespace(true);
DocumentBuilder builder = factory.newDocumentBuilder();
DOMImplementation domImpl = builder.getDOMImplementation();
DOMImplementationLS ls = (DOMImplementationLS) domImpl.getFeature("LS", "3.0");
LSInput in = ls.createLSInput();
in.setByteStream(new ByteArrayInputStream(input.getBytes()));
LSParser parser = ls.createLSParser(DOMImplementationLS.MODE_SYNCHRONOUS,
"http://www.w3.org/2001/XMLSchema");
Document xmlInput = parser.parse(in);
StringWriter stringWriter = new StringWriter();
StreamResult xmlOutput = new StreamResult(stringWriter);
TransformerFactory f = TransformerFactory.newInstance();
f.setAttribute("indent-number", 2);
Transformer transformer = f.newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty(OutputKeys.METHOD, "xml");
transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
transformer.transform(new DOMSource(xmlInput), xmlOutput);
S'il n'y a pas d'interruption entre les balises
input : <tag><nested> hello </nested></tag>
output :
<tag>
<nested> hello </nested>
</tag>
S'il y a:
input : <tag> <nested> hello </nested></tag>
output :
<tag> <nested> hello </nested>
</tag>
machine virtuelle Java 1.6.
Y a-t-il quelque chose d'évident ici?
Cette propriété a corrigé mon problème! Merci! +1 –