Доброго утраОбъединение XML Документы Checkstyle с одинаковой структурой с помощью заводной
У меня есть несколько отчетов XML Checkstyle с одинаковой структурой, что мне нужно, чтобы объединить в единый документ, документ выглядит следующим образом.
<?xml version="1.0" encoding="UTF-8"?>
<checkstyle version="6.15">
<file name="/media/sf_Google_Drive/Development/av_microservice/av_microservice/av_microservice_commons/src/main/java/za/co/av/ms_commons/communication/EMailMessage.java">
</file>
<file name="/media/sf_Google_Drive/Development/av_microservice/av_microservice/av_microservice_commons/src/main/java/za/co/av/ms_commons/communication/EMailSender.java">
</file>
<file name="/media/sf_Google_Drive/Development/av_microservice/av_microservice/av_microservice_commons/src/main/java/za/co/av/ms_commons/communication/SMSMessage.java">
</file>
<file name="/media/sf_Google_Drive/Development/av_microservice/av_microservice/av_microservice_commons/src/main/java/za/co/av/ms_commons/communication/package-info.java">
</file>
<file name="/media/sf_Google_Drive/Development/av_microservice/av_microservice/av_microservice_commons/src/main/java/za/co/av/ms_commons/ussd/InputValidation.java">
</file>
<file name="/media/sf_Google_Drive/Development/av_microservice/av_microservice/av_microservice_commons/src/main/java/za/co/av/ms_commons/ussd/InputValidationALL.java">
</file>
<file name="/media/sf_Google_Drive/Development/av_microservice/av_microservice/av_microservice_commons/src/main/java/za/co/av/ms_commons/ussd/InputValidationINTEGER.java">
</file>
<file name="/media/sf_Google_Drive/Development/av_microservice/av_microservice/av_microservice_commons/src/main/java/za/co/av/ms_commons/ussd/InputValidationTEXT.java">
</file>
<file name="/media/sf_Google_Drive/Development/av_microservice/av_microservice/av_microservice_commons/src/main/java/za/co/av/ms_commons/ussd/MenuNavigationEvent.java">
</file>
<file name="/media/sf_Google_Drive/Development/av_microservice/av_microservice/av_microservice_commons/src/main/java/za/co/av/ms_commons/ussd/SubscriberForUSSD.java">
</file>
<file name="/media/sf_Google_Drive/Development/av_microservice/av_microservice/av_microservice_commons/src/main/java/za/co/av/ms_commons/ussd/USSDMenuItem.java">
<error line="327" severity="error" message="Line is longer than 120 characters (found 157)." source="com.puppycrawl.tools.checkstyle.checks.sizes.LineLengthCheck"/>
<error line="327" column="133" severity="error" message="',' is not followed by whitespace." source="com.puppycrawl.tools.checkstyle.checks.whitespace.WhitespaceAfterCheck"/>
</file>
<file name="/media/sf_Google_Drive/Development/av_microservice/av_microservice/av_microservice_commons/src/main/java/za/co/av/ms_commons/ussd/USSDMenuItemManager.java">
</file>
<file name="/media/sf_Google_Drive/Development/av_microservice/av_microservice/av_microservice_commons/src/main/java/za/co/av/ms_commons/ussd/USSDResponse.java">
</file>
<file name="/media/sf_Google_Drive/Development/av_microservice/av_microservice/av_microservice_commons/src/main/java/za/co/av/ms_commons/ussd/package-info.java">
</file>
<file name="/media/sf_Google_Drive/Development/av_microservice/av_microservice/av_microservice_commons/src/main/java/za/co/av/ms_commons/utils/DateUtils.java">
</file>
<file name="/media/sf_Google_Drive/Development/av_microservice/av_microservice/av_microservice_commons/src/main/java/za/co/av/ms_commons/utils/DbUtils.java">
</file>
<file name="/media/sf_Google_Drive/Development/av_microservice/av_microservice/av_microservice_commons/src/main/java/za/co/av/ms_commons/utils/Enumerators.java">
</file>
<file name="/media/sf_Google_Drive/Development/av_microservice/av_microservice/av_microservice_commons/src/main/java/za/co/av/ms_commons/utils/IDNumberValidator.java">
</file>
<file name="/media/sf_Google_Drive/Development/av_microservice/av_microservice/av_microservice_commons/src/main/java/za/co/av/ms_commons/utils/SimpleHTTP.java">
</file>
<file name="/media/sf_Google_Drive/Development/av_microservice/av_microservice/av_microservice_commons/src/main/java/za/co/av/ms_commons/utils/TextParser.java">
</file>
<file name="/media/sf_Google_Drive/Development/av_microservice/av_microservice/av_microservice_commons/src/main/java/za/co/av/ms_commons/utils/package-info.java">
</file>
</checkstyle>
теперь я попытался объединить, используя следующий код
def list = []
//create new XML file
File newXMLfile= new File("${rootProject.projectDir}/reports/checkStyleCombined.xml")
new StreamingMarkupBuilder().bind {
mkp.xmlDeclaration([version:'1.0', encoding:'UTF-8', standalone:'no'])
checkstyle {
//get list of all checkstyle reports
def dir = new File("${rootProject.projectDir}/reports/checkstyle")
dir.eachFileRecurse (FileType.FILES) { file ->
list << file
}
//itterate though the list
list.each {
//parse xml file
def gPathResult = new XmlSlurper().parse(it)
//find all "file" nodes in xml file
gPathResult.file.each{
TEST(XmlUtil.serialize(it))
out << it
}
}
}
}.writeTo(newXMLfile.newWriter("UTF-8"))
Проблема у меня есть, в два раза, во-первых, кажется, что я не могу использовать метод XmlUtil.serialize написать мой узел, потому что он ставит Объявление XML в каждой строке и форматирование выглядит следующим образом.
<TEST><?xml version="1.0" encoding="UTF-8"?><file name="XXXXXX"/>
Во-вторых вы отметите в файле XML, что есть элемент, называемый файл. Я не могу использовать файл имени в закрытии, потому что файл является зарезервированным словом, поэтому я использую «TEST», но это, очевидно, неправильно. Поэтому мой вопрос прост, кто-нибудь знает, как сделать это более простым способом.