Programming Examples

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

C Examples

Bounced Mail
Bz2
Certificates/Keys
Charset
CSV
DKIM / DomainKey
Diffie-Hellman
DSA
Email Object
Encryption
FileAccess
FTP
HTML Conversion
HTTP
IMAP
MHT / HTML Email
MIME
NTLM
POP3
RSA
SMTP
Socket
Spider
SSH Key
SSH
SSH Tunnel
SFTP
Tar
Upload
XML
Zip
Amazon S3

 

 

 

 

 

 

 

 

(C) XML SearchForTag Method

Demonstrates the SearchForTag and SearchForTag2 methods.

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

<root>
    <searchRoot>
        <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>
    </searchRoot>
    <fruit color="red">strawberry</fruit>
    <fruit color="orange">peach</fruit>
    <root></root>
</root>

Downloads:

MS Windows Visual C/C++ Libraries
Linux/CentOS C/C++ Libraries
MAC OS X C/C++ Libraries
Solaris C/C++ Libraries
C++ Builder Libraries
FreeBSD C++ Libraries
HP-UX C++ Libraries
BlackBerry QNX C++ Libraries
#include <C_CkXml.h>

void ChilkatSample(void)
    {
    HCkXml xml;
    HCkXml xSearchRoot;
    HCkXml xBeginAfter;
    HCkXml xFound;
    BOOL success;
    HCkXml xSearch;

    xml = CkXml_Create();

    //  The sample input XML is available at http://www.chilkatsoft.com/data/fruitSearch.xml
    success = CkXml_LoadXmlFile(xml,"fruitSearch.xml");
    if (success != TRUE) {
        printf("%s\n",CkXml_lastErrorText(xml));
        return;
    }

    //  Search the sub-tree rooted at "searchRoot"
    xSearchRoot = CkXml_FindChild(xml,"searchRoot");

    //  Search for all nodes having the tag "fruit"
    xBeginAfter = 0;
    xFound = CkXml_SearchForTag(xSearchRoot,xBeginAfter,"fruit");
    while (!(xFound == 0 )) {

        printf("%s\n",CkXml_content(xFound));

        CkXml_Dispose(xBeginAfter);
        xBeginAfter = xFound;
        xFound = CkXml_SearchForTag(xSearchRoot,xBeginAfter,"fruit");
    }

    CkXml_Dispose(xBeginAfter);

    printf("--------------------------\n");

    //  ---------------------------------------------------------------------------------
    //  Now do the same, but instead use SearchForTag2
    //  which updates the internal reference of the caller instead
    //  of returning the found node.

    xBeginAfter = CkXml_GetSelf(xSearchRoot);
    xSearch = CkXml_GetSelf(xSearchRoot);

    success = CkXml_SearchForTag2(xSearch,xBeginAfter,"fruit");
    while (success == TRUE) {

        printf("%s\n",CkXml_content(xSearch));

        //  Copy the internal references so that the next search
        //  begins after the found node.
        CkXml_CopyRef(xBeginAfter,xSearch);
        CkXml_CopyRef(xSearch,xSearchRoot);

        success = CkXml_SearchForTag2(xSearch,xBeginAfter,"fruit");
    }

    CkXml_Dispose(xSearch);
    CkXml_Dispose(xBeginAfter);

    CkXml_Dispose(xSearchRoot);



    CkXml_Dispose(xml);

    }

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

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