Visual Basic Examples

ChilkatHOMEASPVisual BasicVB.NETC#Visual C++CMFCDelphiFoxProJavaPerlPHPPythonRubySQL ServerVBScript

VB Examples

Bounced Mail
Bz2
Character Encoding
CSV
Digital Certificates
Digital Signatures
Email
FTP
HTML-to-XML
HTTP
IMAP
Encryption
MHT / HTML Email
POP3
RSA
S/MIME
SFTP
SMTP
Socket
Spider
SSH
SSH Key
SSH Tunnel
String
Tar
Unicode
Upload
XML
XMP
Zip Compression

More Examples...
Email Object
DKIM / DomainKey
NTLM
DH Key Exchange
DSA
FileAccess
RSS
Atom
Self-Extractor
Service
Bzip2
PPMD
Deflate
LZW


VB Strings
VB Byte Array

 

 

 

 

 

 

 

Parse SOAP XML

Demonstrates how to parse SOAP XML.

Download Chilkat XML ActiveX

Dim success As Long
Dim xml As New ChilkatXml

'  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
    MsgBox xml.LastErrorText
    Exit Sub
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:
Dim xmlFields As ChilkatXml
Set xmlFields = xml.GetChildWithTag("Fields")

'  Iterate over each field:
Dim i As Long
Dim xmlField As ChilkatXml
Dim numChildren As Long
numChildren = xmlFields.NumChildren
For i = 0 To numChildren - 1

    Set xmlField = xmlFields.GetChild(i)

    If (xmlField.HasChildWithTagAndContent("Code","Message") = 1) Then
        Text1.Text = Text1.Text & "Message: " _
             & xmlField.GetChildContent("Value") & vbCrLf
    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
    MsgBox xml.LastErrorText
    Exit Sub
End If

xml.FirstChild2 
xml.FirstChild2 
xml.FirstChild2 

'  Find the "Fields" node:
Set xmlFields = xml.GetChildWithTag("Fields")

'  Get each value:
Text1.Text = Text1.Text & "-----" & vbCrLf
Text1.Text = Text1.Text & "Message: " & xmlFields.GetChildContent("Message") & vbCrLf
Text1.Text = Text1.Text & "AuthCodeResp:" & xmlFields.GetChildContent("AuthCodeResp") & vbCrLf
Text1.Text = Text1.Text & "Balance: " & xmlFields.GetChildContent("Balance") & vbCrLf


Need a specific example? Send a request to support@chilkatsoft.com

© 2000-2010 Chilkat Software, Inc. All Rights Reserved.