Agregar un sobre SOAP a un XML en Groovy
Me gustaría agregar un sobre de jabón a un XML usando groovy y XMLParser.
este es mi codigo
import groovy.xml.XmlParser
def soapEnvelope = """<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header>
</soapenv:Header>
<soapenv:Body>
</soapenv:Body>
</soapenv:Envelope>"""
def incomingRequest = """<?xml version="1.0" encoding="UTF-8"?>
<ns1:login xmlns:ns1="urn:partner.soap.sforce.com">
<ns1:username>DemoUser</ns1:username>
<ns1:password>DemoPass</ns1:password>
</ns1:login>"""
def parsedSoapEnvelope = new XmlParser().parseText(soapEnvelope)
def parsedIncomingRequest = new XmlParser().parseText(incomingRequest)
// Add the content of the incoming request to the existing SOAP body
parsedSoapEnvelope.'soapenv:Body'[0].appendNode(parsedIncomingRequest)
// Convert the modified SOAP envelope to a string
def newXmlString = groovy.xml.XmlUtil.serialize(parsedSoapEnvelope)
println newXmlString
Pero obtengo el siguiente resultado:
<?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header/>
<soapenv:Body>
<ns1:login xmlns:ns1="urn:partner.soap.sforce.com"/>
</soapenv:Body>
</soapenv:Envelope>
No hay hijos dentro del nodo de inicio de sesión :(
Se agradece cualquier ayuda.
¡Gracias!
Esperando:
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header/>
<soapenv:Body>
<ns1:login xmlns:ns1="urn:partner.soap.sforce.com">
<ns1:username>DemoUser</ns1:username>
<ns1:password>DemoPass</ns1:password>
</ns1:login>
</soapenv:Body>
</soapenv:Envelope>
gracias de antemano
Aceptado
Utilice agregar en lugar de appendNode
cambio: parsedSoapEnvelope.'soapenv:Body'[0].append(parsedIncomingRequest)
append(groovy.util.Node) toma Node mientras appendNode(java.lang.Object) toma objeto.