Chilkat Examples

ChilkatHOMEAndroid™Classic ASPCC++C#Mono C#.NET Core C#C# UWP/WinRTDataFlexDelphi ActiveXDelphi DLLVisual FoxProJavaLianjaMFCObjective-CPerlPHP ActiveXPHP ExtensionPowerBuilderPowerShellPureBasicPythonRubySQL ServerSwiftTclUnicode CUnicode C++Visual Basic 6.0VB.NETVB.NET UWP/WinRTVBScriptXojo PluginNode.jsExcel

C++ Examples

ASN.1
Amazon S3
Amazon S3 (new)
Amazon SES
Amazon SNS
Amazon SQS
Async
Azure Cloud Storage
Azure Service Bus
Bounced Email
CSR
CSV
Certificates
Compression
DKIM / DomainKey
DSA
Diffie-Hellman
Digital Signatures
Dropbox
ECC
Email Object
Encryption
FTP
Facebook
Firebase
GeoOp
Google APIs
Google Cloud Storage
Google Drive
Gzip
HTML-to-XML/Text
HTTP
HTTP Misc

IMAP
JSON
Java KeyStore (JKS)
Jwt
MHT / HTML Email
MIME
NTLM
OAuth1
OAuth2
OpenSSL
PEM
PFX/P12
POP3
PRNG
PayPal
Peoplevox
QuickBooks
REST
RSA Encryption
SCP
SFTP
SMTP
SSH
SSH Key
SSH Tunnel
Socket/SSL/TLS
Spider
Stream
Tar Archive
Twitter
XML
XMP
Xero
Zip
curl

 

 

 

(C++) Traverse Direct Children via FirstChild / NextSibling, or LastChild / PreviousSibling

Demonstrates some ways to iterate over direct child nodes using the FirstChild / NextSibling and LastChild / PreviousSibling methods.

The input XML, available at http://www.chilkatsoft.com/data/fruit.xml, is this:

<root>
    <fruit color="red">apple</fruit>
    <fruit color="green">pear</fruit>
    <veg color="orange">carrot</veg>
    <meat animal="cow">beef</meat>
    <xyz>
        <fruit color="blue">blueberry</fruit>
        <veg color="green">broccoli</veg>
    </xyz>
    <fruit color="purple">grape</fruit>
    <cheese color="yellow">cheddar</cheese>
</root>

Chilkat C/C++ Library Downloads

MS Visual C/C++

Linux/CentOS/Heroku C/C++

MAC OS X C/C++

C++ Builder

Solaris C/C++

iOS C/C++

Android C/C++

Raspberry Pi C/C++

Windows Mobile 5.0/Pocket PC 2003

ARM Embedded Linux C/C++

PowerLinux C/C++

FreeBSD C/C++

MinGW C/C++

#include <CkXml.h>

void ChilkatSample(void)
    {
    CkXml xml;
    CkXml *child = 0;
    CkXml *nextSibling = 0;
    CkXml *prevSibling = 0;

    bool success;
    //  The sample input XML is available at http://www.chilkatsoft.com/data/fruit.xml
    success = xml.LoadXmlFile("fruit.xml");
    if (success != true) {
        std::cout << xml.lastErrorText() << "\r\n";
        return;
    }

    //  Iterate over the direct children by using FirstChild / NextSibling
    child = xml.FirstChild();
    while (!(child == 0 )) {
        std::cout << child->tag() << " : " << child->content() << "\r\n";
        nextSibling = child->NextSibling();
        delete child;
        child = nextSibling;
    }

    std::cout << "-----" << "\r\n";

    //  Do the same, but with FirstChild2 / NextSibling2 to avoid
    //  creating so many XML object instances:
    success = xml.FirstChild2();
    while (success == true) {
        std::cout << xml.tag() << " : " << xml.content() << "\r\n";
        success = xml.NextSibling2();
    }

    //  Revert back up to the parent:
    success = xml.GetParent2();

    std::cout << "-----" << "\r\n";

    //  Iterate in reverse order using LastChild / PreviousSibling
    child = xml.LastChild();
    while (!(child == 0 )) {
        std::cout << child->tag() << " : " << child->content() << "\r\n";
        prevSibling = child->PreviousSibling();
        delete child;
        child = prevSibling;
    }

    std::cout << "-----" << "\r\n";

    //  Do the same, but with LastChild2 / PreviousSibling2 to avoid
    //  creating so many XML object instances:
    success = xml.LastChild2();
    while (success == true) {
        std::cout << xml.tag() << " : " << xml.content() << "\r\n";
        success = xml.PreviousSibling2();
    }

    //  Revert back up to the parent:
    success = xml.GetParent2();

    }

 

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