Разбор Groovy и Java-кода, встроенный в тег XML - PullRequest
0 голосов
/ 20 февраля 2019

У меня есть xml-файл, в котором есть теги Java и groovy в некоторых тегах, и мне нужно отформатировать код, я могу форматировать xml, но не код java и groovy внутри тегов xml.

Пример: ввод:

<?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);
...