我有一个 xml 文件,其中一些标签中包含 Java 和 groovy 代码,我需要格式化代码,我能够格式化 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);