Formater une chaîne XML en Java
En tant que développeur Java, vous pouvez rencontrer des situations dans lesquelles vous disposez d'une chaîne XML sans saut de ligne ou indentations et devez le convertir en une chaîne bien formatée. Ceci est particulièrement utile à des fins de débogage ou pour présenter des données XML de manière lisible.
Pour accomplir cette tâche, vous pouvez exploiter l'API Java pour le traitement XML (JAXP) et le modèle d'objet de document (DOM) pour transformer le Chaîne XML dans une représentation formatée.
Tout d'abord, créez un nouvel objet Transformer à partir de TransformerFactory. Définissez les propriétés "INDENT" et "{http://xml.apache.org/xslt}indent-amount" sur "yes" et "2" respectivement, pour activer les sauts de ligne et les indentations :
Transformer transformer = TransformerFactory.newInstance().newTransformer(); transformer.setOutputProperty(OutputKeys.INDENT, "yes"); transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
Ensuite, convertissez la chaîne XML en un objet DOMSource :
String inputXml = "<tag><nested>hello</nested></tag>"; DOMSource source = new DOMSource(DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new InputSource(new StringReader(inputXml))));
Ensuite, créez un objet StreamResult pour contenir le XML formaté string :
StreamResult result = new StreamResult(new StringWriter());
Enfin, transformez le DOM source en chaîne XML formatée à l'aide du transformateur :
transformer.transform(source, result);
L'objet result.getWriter() contiendra le XML formaté chaîne :
String formattedXml = result.getWriter().toString();
Exemple :
String unformattedXml = ""; Transformer transformer = TransformerFactory.newInstance().newTransformer(); transformer.setOutputProperty(OutputKeys.INDENT, "yes"); transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2"); DOMSource source = new DOMSource(DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new InputSource(new StringReader(unformattedXml)))); StreamResult result = new StreamResult(new StringWriter()); transformer.transform(source, result); System.out.println(result.getWriter().toString()); hello
Sortie :
<?xml version="1.0" encoding="UTF-8"?> <tag> <nested>hello</nested> </tag>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!