Maison > Java > javaDidacticiel > Comment formater une chaîne XML non formatée en Java à l'aide de JAXP et DOM ?

Comment formater une chaîne XML non formatée en Java à l'aide de JAXP et DOM ?

DDD
Libérer: 2024-12-18 01:11:17
original
503 Les gens l'ont consulté

How to Format an Unformatted XML String in Java Using JAXP and DOM?

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");
Copier après la connexion

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))));
Copier après la connexion

Ensuite, créez un objet StreamResult pour contenir le XML formaté string :

StreamResult result = new StreamResult(new StringWriter());
Copier après la connexion

Enfin, transformez le DOM source en chaîne XML formatée à l'aide du transformateur :

transformer.transform(source, result);
Copier après la connexion

L'objet result.getWriter() contiendra le XML formaté chaîne :

String formattedXml = result.getWriter().toString();
Copier après la connexion

Exemple :

String unformattedXml = "hello";
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());
Copier après la connexion

Sortie :

<?xml version="1.0" encoding="UTF-8"?>
<tag>
  <nested>hello</nested>
</tag>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal