Java での XML 文字列のフォーマット
Java 開発者は、XML 文字列に改行や改行が含まれていない状況に遭遇することがあります。インデントがあり、適切にフォーマットされた文字列に変換する必要があります。これは、デバッグの目的や、XML データを読みやすい方法で表示する場合に特に役立ちます。
このタスクを実行するには、Java API for XML Processing (JAXP) と Document Object Model (DOM) を利用して、 XML 文字列をフォーマットされた表現に変換します。
まず、TransformerFactory から新しい Transformer オブジェクトを作成します。改行とインデントを有効にするには、「INDENT」プロパティと「{http://xml.apache.org/xslt}indent-amount」プロパティをそれぞれ「yes」と「2」に設定します:
Transformer transformer = TransformerFactory.newInstance().newTransformer(); transformer.setOutputProperty(OutputKeys.INDENT, "yes"); transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
次に、XML 文字列を DOMSource オブジェクトに変換します。
String inputXml = "<tag><nested>hello</nested></tag>"; DOMSource source = new DOMSource(DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new InputSource(new StringReader(inputXml))));
次に、フォーマットされた XML を保持する StreamResult オブジェクトを作成します。 string:
StreamResult result = new StreamResult(new StringWriter());
最後に、トランスフォーマーを使用してソース DOM を書式設定された XML 文字列に変換します:
transformer.transform(source, result);
result.getWriter() オブジェクトには書式設定された XML が含まれます。文字列:
String formattedXml = result.getWriter().toString();
例:
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
出力:
<?xml version="1.0" encoding="UTF-8"?> <tag> <nested>hello</nested> </tag>
以上がJAXP と DOM を使用して Java でフォーマットされていない XML 文字列をフォーマットする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。