在Jenkins文件中将xml转换为json

在Jenkins文件中将xml转换为json,json,xml,jenkins-pipeline,Json,Xml,Jenkins Pipeline,当我试图将xml转换为json时,Jenkins文件中的一个方法出现问题。这就是方法和管道。 我试图将该方法直接传递给echo,但它给了我一个错误,管道失败 很抱歉,我不知道我可以提供关于错误的详细信息,因为我开始学习,这是我第一次看到这段代码 错误:org.xml.sax.SAXParseException;行号:2;列数:1;prolog中不允许包含内容 我编辑我的问题,并在阶段OWASP依赖项测试中添加一个bat。这个bat自动创建xml,我放入了一个验证器xml,这没有错误。因此,我不知

当我试图将xml转换为json时,Jenkins文件中的一个方法出现问题。这就是方法和管道。 我试图将该方法直接传递给echo,但它给了我一个错误,管道失败 很抱歉,我不知道我可以提供关于错误的详细信息,因为我开始学习,这是我第一次看到这段代码

错误:org.xml.sax.SAXParseException;行号:2;列数:1;prolog中不允许包含内容

我编辑我的问题,并在阶段OWASP依赖项测试中添加一个bat。这个bat自动创建xml,我放入了一个验证器xml,这没有错误。因此,我不知道问题是否出在Jenkinsfile或xml的代码上,因为错误是相同的。我放了一部分xml代码,因为它很长,但是 错误仍然在第二行

XML代码:

<?xml version="1.0" encoding="UTF-8"?>
<analysis xmlns="https://jeremylong.github.io/DependencyCheck/dependency-check.2.2.xsd">
   <scanInfo>
      <engineVersion>5.2.2</engineVersion>
      <dataSource>
         <name>NVD CVE Checked</name>
         <timestamp>2019-11-25T09:01:51</timestamp>
      </dataSource> 
      <datasource>...</datasource>
   </scanInfo>
   ....................
</analysis>

5.2.2
NVD CVE检查
2019-11-25T09:01:51
...
....................

import groovy.json.*;
def getDependencyResumeFromXML(路径报告){
defxml=bat(脚本:'type'+pathReport,returnStdout:true);
def x=new XmlParser().parseText(xml);
def nDep=x.dependencies.dependency.size();
def依赖项=[:];

对于(def i=0;来自XML解析器的错误是提示:“prolog中不允许内容”。这表示传递给脚本的XML似乎格式错误(即无效XML)。您应该首先在web浏览器中打开XML文件-如果失败并出现相同的错误,则修复XML文件。我编辑我的问题是因为我认为有必要使用XML代码@KimbertThe XML看起来不错,但这并不意味着它在提交给Jenkins XML解析器时是格式良好的文档。有时会产生XML解析错误当XML文档的字符编码不正确时(例如UTF-16而不是UTF-8)。
import groovy.json.*;

 def getDependencyResumeFromXML(pathReport){
        def xml = bat(script:'type ' + pathReport, returnStdout:true);

        def x = new XmlParser().parseText(xml);

        def nDep = x.dependencies.dependency.size();

        def dependencies = [:];

        for(def i=0;i<nDep;i++){


            dependencies[i] = [fileName: x.dependencies.dependency[i].fileName.text(),description:x.dependencies.dependency[i].description.text(),vulnerabilities:[:]];

            def nVul = x.dependencies.dependency[i].vulnerabilities.vulnerability.size();

            for(def j=0;j<nVul;j++){

                dependencies[i].vulnerabilities[j] = [
                 name:x.dependencies.dependency[i].vulnerabilities.vulnerability[j].name.text(),                   cvssScore:x.dependencies.dependency[i].vulnerabilities.vulnerability[j].cvssScore.text(),
                   severity:x.dependencies.dependency[i].vulnerabilities.vulnerability[j].severity.text(),

                  cwe:x.dependencies.dependency[i].vulnerabilities.vulnerability[j].cwe.text(),
                  description:x.dependencies.dependency[i].vulnerabilities.vulnerability[j].description.text(),

                ];

            }

        }

        return dependencies;
    }

pipeline{
.......

  stages{
    stage('OWASP dependencies testing'){ 
                    steps{
                        script{
                      bat 'mvn org.owasp:dependency-check-maven:check';

                            def pathReport = 'C:\\tmp\\workspace\\umbrella-pipeline-prueba\\target\\dependency-check\\dependency-check-report.xml';

                            def xml = bat(script:'type ' + pathReport, returnStdout:true);

                            echo '------------------ 1';
                            echo xml;
                            echo '------------------ 2';

                            echo '--------------------------------'

                            def dependencias = getDependencyResumeFromXML(pathReport);

                            echo '------------- 3';
                            echo dependencias;
                            echo '------------- 4';                      
                        }
                    }
                }
}
}