Heim >Java >javaLernprogramm >Wie formatiere ich einen unformatierten XML-String in Java mit JAXP und DOM?

Wie formatiere ich einen unformatierten XML-String in Java mit JAXP und DOM?

DDD
DDDOriginal
2024-12-18 01:11:17510Durchsuche

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

Formatieren einer XML-Zeichenfolge in Java

Als Java-Entwickler kann es vorkommen, dass Sie eine XML-Zeichenfolge ohne Zeilenumbrüche haben oder Einrückungen und müssen es in eine schön formatierte Zeichenfolge konvertieren. Dies ist besonders nützlich für Debugging-Zwecke oder für die lesbare Darstellung von XML-Daten.

Um diese Aufgabe zu erfüllen, können Sie die Java API for XML Processing (JAXP) und das Document Object Model (DOM) nutzen, um die zu transformieren XML-String in eine formatierte Darstellung.

Erstellen Sie zunächst ein neues Transformer-Objekt aus der TransformerFactory. Setzen Sie die Eigenschaften „INDENT“ und „{http://xml.apache.org/xslt}indent-amount“ auf „yes“ bzw. „2“, um Zeilenumbrüche und Einrückungen zu ermöglichen:

Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");

Als nächstes konvertieren Sie die XML-Zeichenfolge in ein DOMSource-Objekt:

String inputXml = "<tag><nested>hello</nested></tag>";
DOMSource source = new DOMSource(DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new InputSource(new StringReader(inputXml))));

Erstellen Sie dann ein StreamResult-Objekt, um das formatierte XML zu speichern string:

StreamResult result = new StreamResult(new StringWriter());

Zuletzt transformieren Sie das Quell-DOM mithilfe des Transformators in die formatierte XML-Zeichenfolge:

transformer.transform(source, result);

Das result.getWriter()-Objekt enthält das formatierte XML Zeichenfolge:

String formattedXml = result.getWriter().toString();

Beispiel:

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());

Ausgabe:

<?xml version="1.0" encoding="UTF-8"?>
<tag>
  <nested>hello</nested>
</tag>

Das obige ist der detaillierte Inhalt vonWie formatiere ich einen unformatierten XML-String in Java mit JAXP und DOM?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn