-2

I am trying to parse an jmeter soap response (XML), however I get a parsing error

org.xml.sax.SAXParseException: Content is not allowed in prolog

I have validated that the SOAP response (XML) is valid using online tools, however to no avail. I still get a error. Even when I attempt to get a pretty XML output I get null error because the parse has resulted in null.

The code snippet is below:

import groovy.util.XmlSlurper;
import groovy.util.XmlParser;
import groovy.util.slurpersupport.NodeChild;

def xmlContent = ctx.getPreviousResult().getResponseDataAsString();
log.info(xmlContent);

def stringWriter = new StringWriter()
def parse = new XmlSlurper();
def respParse = parse.parseText(xmlContent);
log.info(respParse);
def test = new XmlNodePrinter(new PrintWriter(stringWriter)).print(respParse) 
log.info(test);

XML is:

<?xml version="1.0" encoding="UTF-8"?>
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
        <soapenv:Body>
            <ns2:Response xmlns:ns2="URL" xmlns="URL" xmlns:ns4="URL" xmlns:ns3="URL" xmlns:ns5="URL">
                 <something>Code</something>
                 <somethingDescription>Message</somethingDescription>
             <ns2:pending/>
                 <ns2:posted/>
         </ns2:Response>
     </soapenv:Body>
</soapenv:Envelope>

Any ideas as to what I'm doing wrong

Nobody
  • 549
  • 1
  • 10
  • 24

2 Answers2

1

You have mistaken variable with a value in line:

def respParse = parse.parseText("xmlContent");

You've passed a String instead of a variable xmlContent. It should be:

def respParse = parse.parseText(xmlContent);
Szymon Stepniak
  • 40,216
  • 10
  • 104
  • 131
0

I managed to fix the issue with the following code:

      import groovy.util.XmlSlurper;



       def xmlContent = ctx.getPreviousResult().getResponseDataAsString();
       log.info(xmlContent);

       def resp = new XmlSlurper().parseText(xmlContent);

       def result = resp.Body.Response;
       def respCode = resp.Body.Response.ResponseCode;
       def respCodeDesc = resp.Body.Response.Description;
       log.info(respCode.toString());
Nobody
  • 549
  • 1
  • 10
  • 24