如何在 Netsuite 中解析 XML 并在 groovy 中获取特定值
How can I parse XML in Netsuite and get a specific value in groovy
响应是:
<?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <soapenv:Header>
<platformMsgs:documentInfo xmlns:platformMsgs="urn:messages_2014_2.platform.webservices.netsuite.com">
<platformMsgs:nsId>WEBSERVICES_TSTDRV1371590_041220151334115279325827527_fefe8c</platformMsgs:nsId>
</platformMsgs:documentInfo> </soapenv:Header> <soapenv:Body>
<addResponse xmlns="">
<platformMsgs:writeResponse xmlns:platformMsgs="urn:messages_2014_2.platform.webservices.netsuite.com">
<platformCore:status xmlns:platformCore="urn:core_2014_2.platform.webservices.netsuite.com" isSuccess="true"/>
<platformMsgs:baseRef xmlns:platformCore="urn:core_2014_2.platform.webservices.netsuite.com" internalId="5450" type="customer" xsi:type="platformCore:RecordRef"/>
</platformMsgs:writeResponse>
</addResponse>
</soapenv:Body>
</soapenv:Envelope>
如何使用 groovy 获取此 xml 的内部 ID 我的代码是:
def slurper = new XmlSlurper().parseText(response.text);
最简单的答案:
def slurper = new XmlSlurper().parseText(response.text)
def internalId = slurpXml['Body']['addResponse']['writeResponse']['baseRef'].attribute('internalId')
当然,这完全忽略了命名空间。不过,在您的示例中您无需担心它。
你的意思是:
def slurper = new XmlSlurper().parseText(response.text);
def id = slurper.Body.addResponse.writeResponse.baseRef.@internalId
assert id == '5450'
响应是:
<?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <soapenv:Header>
<platformMsgs:documentInfo xmlns:platformMsgs="urn:messages_2014_2.platform.webservices.netsuite.com">
<platformMsgs:nsId>WEBSERVICES_TSTDRV1371590_041220151334115279325827527_fefe8c</platformMsgs:nsId>
</platformMsgs:documentInfo> </soapenv:Header> <soapenv:Body>
<addResponse xmlns="">
<platformMsgs:writeResponse xmlns:platformMsgs="urn:messages_2014_2.platform.webservices.netsuite.com">
<platformCore:status xmlns:platformCore="urn:core_2014_2.platform.webservices.netsuite.com" isSuccess="true"/>
<platformMsgs:baseRef xmlns:platformCore="urn:core_2014_2.platform.webservices.netsuite.com" internalId="5450" type="customer" xsi:type="platformCore:RecordRef"/>
</platformMsgs:writeResponse>
</addResponse>
</soapenv:Body>
</soapenv:Envelope>
如何使用 groovy 获取此 xml 的内部 ID 我的代码是:
def slurper = new XmlSlurper().parseText(response.text);
最简单的答案:
def slurper = new XmlSlurper().parseText(response.text)
def internalId = slurpXml['Body']['addResponse']['writeResponse']['baseRef'].attribute('internalId')
当然,这完全忽略了命名空间。不过,在您的示例中您无需担心它。
你的意思是:
def slurper = new XmlSlurper().parseText(response.text);
def id = slurper.Body.addResponse.writeResponse.baseRef.@internalId
assert id == '5450'