一部のタグに Java および groovy コードを含む xml ファイルがあり、コードをフォーマットする必要があります。xml をフォーマットすることはできますが、xml タグ内の Java および groovy コードをフォーマットすることはできません。
例: 入力:
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://web-harvest.sourceforge.net/schema/1.0/config" charset="UTF-8" scriptlang="groovy">
<script><![CDATA[
class Room{
public int length=""; public List<String> comments = new ArrayList<>();static void main(String[] args){}
}
]]></script>
<export include-original-data="true">
</export>
</config>
これを出力として必要です(適切にフォーマットされています):
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://web-harvest.sourceforge.net/schema/1.0/config" charset="UTF-8" scriptlang="groovy">
<script><![CDATA[
class Room{
public int length="";
public List<String> comments = new ArrayList<>();
static void main(String[] args){}
]]>
</script>
<export include-original-data="true">
</export>
</config>
xml タグの内部テキストを取得してフォーマットできますが、内部テキストを取得せずにフォーマットを行う必要があります
このコードをxmlフォーマットに使用しました
DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document doc = db.parse(new InputSource(new StringReader(xml)));
OutputFormat format = new OutputFormat(doc);
format.setIndenting(true);
format.setIndent(4);
format.setOmitXMLDeclaration(ommitXmlDeclaration);
format.setLineWidth(Integer.MAX_VALUE);
Writer outxml = new StringWriter();
XMLSerializer serializer = new XMLSerializer(outxml, format);
serializer.serialize(doc);