1

Transformer オブジェクトから出力 XML ファイルをフォーマットすることは可能ですか。

今のところ、私はこれらを出力として得ました:

<A name="a" type="a">
     <B name="b" type="b" width="100" height="100" />
     <B name="b" type="b" width="100" height="200" />
     <B name="b" type="b" width="100" height="300" />
     <B name="b" type="b" width="100" height="400" />
</A>

しかし、私は次のようなものが欲しいです:

<A name="a"
   type="a">
   <B name="b"
      type="b"
      width="100"
      height="100" />
   <B name="b"
      type="b"
      width="100"
      height="200" />
   <B name="b"
      type="b"
      width="100"
      height="300" />
   <B name="b"
      type="b"
      width="100"
      height="400" />
</A>

トランスフォーマーのコード スニペットは次のとおりです。

TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(file);
transformer.transform(source, result);
4

1 に答える 1

0

xml を tmp ファイルに保存し、そこから行ごとに読み取り、フォーマットして保存します。1行の例

    String line = "    <B name=\"b\" type=\"b\" width=\"100\" height=\"100\" />";
    String indent = line.startsWith("<A") ? "   " : "       "; 
    line = line.replaceAll("(type|width|height)", "\n" + indent +  "$1");
    System.out.println(line);

出力

<B name="b" 
   type="b" 
   width="100" 
   height="100" />
于 2013-05-16T02:22:48.057 に答える