Note that there are some explanatory texts on larger screens.

plurals
  1. POCan't access child nodes in XML
    text
    copied!<p>I'm using Coldfusion 9 to create a SOAP web service to allow our selling partners to post orders directly into our e-commerce platform. The inbound SOAP message contains nodes that look like this:</p> <pre><code>... &lt;LineItem xsi:type="ws1:Item"&gt; &lt;LineNumber xsi:type="xsd:double"&gt;1&lt;/LineNumber&gt; &lt;PartNumber xsi:type="xsd:string"&gt;Widget-01&lt;/PartNumber&gt; &lt;Price xsi:type="xsd:double"&gt;100&lt;/Price&gt; &lt;Quantity xsi:type="xsd:double"&gt;4&lt;/Quantity&gt; &lt;SubscriberEmail xsi:type="xsd:string"&gt;nitwit@gmail.com&lt;/SubscriberEmail&gt; &lt;UnitofMeasure xsi:type="xsd:string"&gt;EA&lt;/UnitofMeasure&gt; &lt;/LineItem&gt; ... </code></pre> <p>I'm receiving the inbound request with the following Coldfusion code:</p> <pre><code>&lt;cfset theXML = getsoaprequest() /&gt; &lt;cfset arrNodes = XmlSearch(theXML, "//LineItem") /&gt; &lt;cfset rtn = arrNodes[1].PartNumber.XmlText/&gt; </code></pre> <p>But the third line throws an error: "Element PARTNUMBER.XMLTEXT is undefined in a Java object of type class coldfusion.xml.XmlNodeMap referenced as '' "</p> <p>When I change the third line to:<code>arrNodes[1].XmlChildren</code> it returns no results. It's almost like the child nodes don't exist, yet <code>arrNodes[1]</code> returns a fully populated node.</p> <p>What am I missing?</p> <p>Edit: Here's the whole SoapBody:</p> <pre><code> &lt;soapenv:Body&gt; &lt;ws1:createOrder soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"&gt; &lt;Order xsi:type="ws1:Order"&gt; &lt;BillToAddress xsi:type="ws1:Address"&gt; &lt;AddrLine1 xsi:type="xsd:string"&gt;10101 Main Street&lt;/AddrLine1&gt; &lt;AddrLine2 xsi:type="xsd:string"&gt;Science Lab&lt;/AddrLine2&gt; &lt;AddrLine3 xsi:type="xsd:string"&gt;&lt;/AddrLine3&gt; &lt;Attention xsi:type="xsd:string"&gt;John Doe&lt;/Attention&gt; &lt;AttnPhone xsi:type="xsd:string"&gt;877-555-0131&lt;/AttnPhone&gt; &lt;City xsi:type="xsd:string"&gt;Roseville&lt;/City&gt; &lt;CompanyName xsi:type="xsd:string"&gt;Washington High School&lt;/CompanyName&gt; &lt;Country xsi:type="xsd:string"&gt;USA&lt;/Country&gt; &lt;PostalCode xsi:type="xsd:string"&gt;95747&lt;/PostalCode&gt; &lt;StateProvince xsi:type="xsd:string"&gt;CA&lt;/StateProvince&gt; &lt;/BillToAddress&gt; &lt;CustPO xsi:type="xsd:string"&gt;asdfasdf13241234&lt;/CustPO&gt; &lt;OrderDate xsi:type="xsd:dateTime"&gt;2002-05-30T09:00:00&lt;/OrderDate&gt; &lt;OrderDetail xsi:type="ws1:Orderdetail"&gt; &lt;LineItem xsi:type="ws1:Item"&gt; &lt;LineNumber xsi:type="xsd:double"&gt;1&lt;/LineNumber&gt; &lt;PartNumber xsi:type="xsd:string"&gt;Widget01&lt;/PartNumber&gt; &lt;Price xsi:type="xsd:double"&gt;100&lt;/Price&gt; &lt;Quantity xsi:type="xsd:double"&gt;4&lt;/Quantity&gt; &lt;SubscriberEmail xsi:type="xsd:string"&gt;nitwit@gmail.com&lt;/SubscriberEmail&gt; &lt;UnitofMeasure xsi:type="xsd:string"&gt;EA&lt;/UnitofMeasure&gt; &lt;/LineItem&gt; &lt;LineItem xsi:type="ws1:Item"&gt; &lt;LineNumber xsi:type="xsd:double"&gt;2&lt;/LineNumber&gt; &lt;PartNumber xsi:type="xsd:string"&gt;&gt;Widget02&lt;/PartNumber&gt; &lt;Price xsi:type="xsd:double"&gt;100&lt;/Price&gt; &lt;Quantity xsi:type="xsd:double"&gt;6&lt;/Quantity&gt; &lt;SubscriberEmail xsi:type="xsd:string"&gt;nitwit@gmail.com&lt;/SubscriberEmail&gt; &lt;UnitofMeasure xsi:type="xsd:string"&gt;EA&lt;/UnitofMeasure&gt; &lt;/LineItem&gt; &lt;/OrderDetail&gt; &lt;PurchAgent xsi:type="xsd:string"&gt;Mary&lt;/PurchAgent&gt; &lt;PurchAgentEmail xsi:type="xsd:string"&gt;mary@gmail.com&lt;/PurchAgentEmail&gt; &lt;PurchAgentPhone xsi:type="xsd:string"&gt;877-555-0131&lt;/PurchAgentPhone&gt; &lt;ShipToAddress xsi:type="ws1:Address"&gt; &lt;AddrLine1 xsi:type="xsd:string"&gt;10101 Main Street&lt;/AddrLine1&gt; &lt;AddrLine2 xsi:type="xsd:string"&gt;Science Lab&lt;/AddrLine2&gt; &lt;AddrLine3 xsi:type="xsd:string"&gt;&lt;/AddrLine3&gt; &lt;Attention xsi:type="xsd:string"&gt;John Doe&lt;/Attention&gt; &lt;AttnPhone xsi:type="xsd:string"&gt;877-555-0131&lt;/AttnPhone&gt; &lt;City xsi:type="xsd:string"&gt;Roseville&lt;/City&gt; &lt;CompanyName xsi:type="xsd:string"&gt;Washington High School&lt;/CompanyName&gt; &lt;Country xsi:type="xsd:string"&gt;USA&lt;/Country&gt; &lt;PostalCode xsi:type="xsd:string"&gt;95747&lt;/PostalCode&gt; &lt;StateProvince xsi:type="xsd:string"&gt;CA&lt;/StateProvince&gt; &lt;/ShipToAddress&gt; &lt;SoldToAddress xsi:type="ws1:Address"&gt; &lt;AddrLine1 xsi:type="xsd:string"&gt;10101 Main Street&lt;/AddrLine1&gt; &lt;AddrLine2 xsi:type="xsd:string"&gt;Science Lab&lt;/AddrLine2&gt; &lt;AddrLine3 xsi:type="xsd:string"&gt;&lt;/AddrLine3&gt; &lt;Attention xsi:type="xsd:string"&gt;John Doe&lt;/Attention&gt; &lt;AttnPhone xsi:type="xsd:string"&gt;877-555-0131&lt;/AttnPhone&gt; &lt;City xsi:type="xsd:string"&gt;Roseville&lt;/City&gt; &lt;CompanyName xsi:type="xsd:string"&gt;Washington High School&lt;/CompanyName&gt; &lt;Country xsi:type="xsd:string"&gt;USA&lt;/Country&gt; &lt;PostalCode xsi:type="xsd:string"&gt;95747&lt;/PostalCode&gt; &lt;StateProvince xsi:type="xsd:string"&gt;CA&lt;/StateProvince&gt; &lt;/SoldToAddress&gt; &lt;/Order&gt; &lt;/ws1:createOrder&gt; </code></pre> <p></p> <p>EDIT: here's the code I added (at Scott's suggestion) that made it work:</p> <pre><code>&lt;cfset strXML = ToString(docXML) /&gt; &lt;cfset strXml = REReplace( strXml, "^[^&lt;]*", "", "all" ) /&gt; &lt;cfset docXML = XMLParse(strXML) /&gt; </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload