VBScript Examples

ChilkatHOMEAndroid™ASPVisual BasicVB.NETC#iOS (IPhone)Objective-CC++CMFCDelphiFoxProJavaPerl
PHP ExtensionPHP ActiveXPythonPowerShellRubySQL ServerVBScript

VBScript Examples

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

More Examples...
Amazon S3
Email Object
DKIM / DomainKey
NTLM
FileAccess
Byte Array
RSS
Atom
Service
PPMD
Deflate
DH Key Exchange
DSA
Bzip2
LZW

 

 

 

 

 

 

 

Parse SOAP XML

Demonstrates how to parse SOAP XML.

Download Chilkat XML ActiveX

Dim fso, outFile
Set fso = CreateObject("Scripting.FileSystemObject")
Set outFile = fso.CreateTextFile("output.txt", True)


set xml = CreateObject("Chilkat.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
    MsgBox xml.LastErrorText
    WScript.Quit
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.Xml
Set xmlFields = xml.GetChildWithTag("Fields")

'  Iterate over each field:

numChildren = xmlFields.NumChildren
For i = 0 To numChildren - 1

    ' xmlField is a Chilkat.Xml
    Set xmlField = xmlFields.GetChild(i)

    If (xmlField.HasChildWithTagAndContent("Code","Message") = 1) Then
        outFile.WriteLine("Message: " & xmlField.GetChildContent("Value"))
    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
    WScript.Quit
End If

xml.FirstChild2 
xml.FirstChild2 
xml.FirstChild2 

'  Find the "Fields" node:
' xmlFields is a Chilkat.Xml
Set xmlFields = xml.GetChildWithTag("Fields")

'  Get each value:
outFile.WriteLine("-----")
outFile.WriteLine("Message: " & xmlFields.GetChildContent("Message"))
outFile.WriteLine("AuthCodeResp:" & xmlFields.GetChildContent("AuthCodeResp"))
outFile.WriteLine("Balance: " & xmlFields.GetChildContent("Balance"))


outFile.Close

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

Mail Component · XML Parser