C# Examples

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

C# Examples

Bounced Mail
Bz2
Character Encoding
CSV
DKIM / DomainKey
Digital Certificates
Digital Signatures
Email
Email Object
FTP
HTML Conversion
HTTP
IMAP
Encryption
MHT / HTML Email
MIME
POP3
RSA
S/MIME
SMTP
Socket
Spider
SSH
SSH Tunnel
SSH Key
SFTP
Tar Archive
Upload
XML
XMP
Zip Compression


More Examples...
Amazon S3
NTLM
FileAccess
RSS
Atom
String
Byte Array
Self-Extractor
Service
PPMD
Deflate
DH Key Exchange
DSA
Bzip2
LZW

 

 

 

 

 

 

Parse SOAP XML

Demonstrates how to parse SOAP XML.

Download Chilkat .NET for 4.0 Framework

Download Chilkat .NET for 64-bit 4.0 Framework (x64)

Download Chilkat .NET for 2.0 / 3.5 Framework

Download Chilkat .NET for 64-bit 2.0 / 3.5 Framework (x64)

Download Chilkat .NET for 1.0 / 1.1 Framework

bool success;
Chilkat.Xml xml = new 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 == false) {
    MessageBox.Show(xml.LastErrorText);
    return;
}

//  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:
Chilkat.Xml xmlFields = null;
xmlFields = xml.GetChildWithTag("Fields");

//  Iterate over each field:
int i;
Chilkat.Xml xmlField = null;
int numChildren;
numChildren = xmlFields.NumChildren;
for (i = 0; i <= numChildren - 1; i++) {

    xmlField = xmlFields.GetChild(i);

    if (xmlField.HasChildWithTagAndContent("Code","Message") == true) {
        textBox1.Text += "Message: " + xmlField.GetChildContent("Value") + "\r\n";
    }

    //  Use the same logic for the other fields you want to capture...

}

//  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 == false) {
    MessageBox.Show(xml.LastErrorText);
    return;
}

xml.FirstChild2();
xml.FirstChild2();
xml.FirstChild2();

//  Find the "Fields" node:
xmlFields = xml.GetChildWithTag("Fields");

//  Get each value:
textBox1.Text += "-----" + "\r\n";
textBox1.Text += "Message: " + xmlFields.GetChildContent("Message") + "\r\n";
textBox1.Text += "AuthCodeResp:" + xmlFields.GetChildContent("AuthCodeResp") + "\r\n";
textBox1.Text += "Balance: " + xmlFields.GetChildContent("Balance") + "\r\n";


 

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

Email Component · XML Parser