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 = ""; 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
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!