如何使用Gradle和regex解析XML +注释并保存到新文件



如果我有一个下面形状的XML文件,并想用Groovy中的Regex解析它,我如何以一种非常简单的方式做到这一点,并从中创建一个新文件?我想使用regex而不是操纵DOM是有原因的。我需要注释到新文件。

我也不想指定要在XML文件中删除哪些元素,它可能是可以添加的多个我不知道的元素。所以它应该是:删除除根元素和任务元素及其子元素和注释之外的所有内容。

初始文件:

<root attribute1="attribute">
<tests>
<test>Test 1</test>
<test>Test 2</test>
</tests>
<tasks>
<!--
<task name="task one" >
Some task that is commented
</task>
-->
<task name="task one" >
Some text
</task>
</tasks>
</root>

新文件:

<root attribute1="attribute">
<tasks>
<!--
<task name="task one" >
Some task that is commented
</task>
-->
<task name="task one" >
Some text
</task>
</tasks>
</root>

这是我对Gradle函数的理解:

def extractXml() {
def input = new File("initial_file.xml")

if (input.exists()) {
def doc = DOMBuilder.parse(new StringReader(input.text))
def rootElement = doc.documentElement
use(DOMCategory) {
String xmlEventContent = rootElement as String
new File("new_file.xml").write(xmlEventContent)
}
}
}

也许这更接近你想要的?

def extractXml() {
def input = new File("initial_file.xml")

if (input.exists()) {
def doc = DOMBuilder.parse(new StringReader(input.text)).documentElement
use(DOMCategory) {
doc.each {
if (it.nodeName != 'tasks' && it.nodeName != '#text') {
doc.removeChild(it)
}
}
String xmlEventContent = doc as String
new File("new_file.xml").write(xmlEventContent)
}
}
}

避免使用正则表达式😉

相关内容

  • 没有找到相关文章

最新更新