![]() |
Chilkat HOME Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi DLL Go Java Node.js Objective-C PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
Parse SOAP XMLDemonstrates how to parse SOAP XML.
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> </head> <body> <% set xml = Server.CreateObject("Chilkat_9_5_0.Xml") ' The Chilkat XML component is freeware. ' Load an XML document. ' This document may be downloaded at: ' http://www.chilkatsoft.com/testData/soap1.xml success = xml.LoadXmlFile("soap1.xml") If (success = 0) Then Response.Write "<pre>" & Server.HTMLEncode(xml.LastErrorText) & "</pre>" End If ' The sample XML document parsed here is a prime example ' of how NOT to design your XML schema. When designing ' XML, always keep in mind how a program might parse it. ' Poorly designed XML is a big pain-in-the-ass to parse. ' We'll show you a much better schema at the end of this ' example. ' Here's the XML we'll want to parse: ' <?xml version="1.0" encoding="utf-8"?><soap:Envelope ' xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" ' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ' xmlns:xsd="http://www.w3.org/2001/XMLSchema"> ' <soap:Body> ' <SendRequestResponse ' xmlns="http://merchantwarehouse.com/webservices/public/MerchantWareService1"> ' <SendRequestResult> ' <Code>Approved</Code> ' <ProcessorData>[Response_Code][00][Response_Text][106857][Auth_Reference ' ][0016][Amount_Balance][205.78][Expiration_Date][012014][Trans_Date_Time ' ][012209000734][Card_Number][710001900593731][Transaction_ID][1]</ProcessorData> ' <Fields><Field> ' <Code>Unknown</Code><Value>1</Value> ' </Field> ' <Field> ' <Code>Message</Code><Value>106857</Value> ' </Field> ' <Field> ' <Code>AuthCodeResp</Code><Value>0016</Value> ' </Field> ' <Field> ' <Code>Balance</Code><Value>205.78</Value> ' </Field> ' </Fields> ' </SendRequestResult> ' </SendRequestResponse> ' </soap:Body> ' </soap:Envelope> ' The poor design choice in the above XML is to use the same tag over and over. ' For example "Field", "Code", and "Value". ' Here's a much much better design, and you'll see later how the parsing is so much simpler: ' ' ... ' <Fields> ' <Message>106857</Message> ' <AuthCodeResp>0016</AuthCodeResp> ' <Balance>205.78</Balance> ' </Fields> ' ... ' Notice it's much more compact. ' The other poor design choice is globbing all of that information in "ProcessorData". ' You can't use XML alone to parse the contents of that node -- you'll have to write ' some custom string parsing code for it... (ughhh) ' ' OK... so let's parse this beast... ' We already have it loaded in an instance of the XML object. ' Drill down to the SendRequestResult node: xml.FirstChild2 xml.FirstChild2 xml.FirstChild2 ' Find the "Fields" node: ' xmlFields is a Chilkat_9_5_0.Xml Set xmlFields = xml.GetChildWithTag("Fields") ' Iterate over each field: numChildren = xmlFields.NumChildren For i = 0 To numChildren - 1 ' xmlField is a Chilkat_9_5_0.Xml Set xmlField = xmlFields.GetChild(i) If (xmlField.HasChildWithTagAndContent("Code","Message") = 1) Then Response.Write "<pre>" & Server.HTMLEncode( "Message: " _ & xmlField.GetChildContent("Value")) & "</pre>" End If ' Use the same logic for the other fields you want to capture... Next ' Here's the XML parsing code if the XML were designed like this: ' ... ' <Fields> ' <Unknown>1</Unknown> ' <Message>106857</Message> ' <AuthCodeResp>0016</AuthCodeResp> ' <Balance>205.78</Balance> ' </Fields> ' ... success = xml.LoadXmlFile("soap2.xml") If (success = 0) Then Response.Write "<pre>" & Server.HTMLEncode(xml.LastErrorText) & "</pre>" End If xml.FirstChild2 xml.FirstChild2 xml.FirstChild2 ' Find the "Fields" node: ' xmlFields is a Chilkat_9_5_0.Xml Set xmlFields = xml.GetChildWithTag("Fields") ' Get each value: Response.Write "<pre>" & Server.HTMLEncode( "-----") & "</pre>" Response.Write "<pre>" & Server.HTMLEncode( "Message: " _ & xmlFields.GetChildContent("Message")) & "</pre>" Response.Write "<pre>" & Server.HTMLEncode( "AuthCodeResp:" _ & xmlFields.GetChildContent("AuthCodeResp")) & "</pre>" Response.Write "<pre>" & Server.HTMLEncode( "Balance: " _ & xmlFields.GetChildContent("Balance")) & "</pre>" %> </body> </html> |
||||
© 2000-2026 Chilkat Software, Inc. All Rights Reserved.