Sample code for 30+ languages & platforms
Unicode C

Demonstrate the XML FindNextRecord Method

See more XML Examples

Imagine we have an XML file as follows:
<CompleteMultipartUpload>
  <Part>
    <PartNumber>1</PartNumber>
    <ETag>abc</ETag>
  </Part>
  <Part>
    <PartNumber>2</PartNumber>
    <ETag>def</ETag>
  </Part>
  <Part>
    <PartNumber>3</PartNumber>
    <ETag>ghi</ETag>
  </Part>
</CompleteMultipartUpload>
We want to find the record where PartNumber = 2. To do so, we simply position ourselves at the first "Part" tag, and then call FindNextRecord. (See below..)

Chilkat Unicode C Downloads

Unicode C
#include <C_CkXmlW.h>

void ChilkatSample(void)
    {
    HCkXmlW xml;
    HCkXmlW foundRec;

    xml = CkXmlW_Create();

    CkXmlW_LoadXmlFile(xml,L"qa_data/xml/multipartUpload.xml");

    // Position ourselves at the 1st record.
    CkXmlW_GetChild2(xml,0);

    foundRec = CkXmlW_FindNextRecord(xml,L"PartNumber",L"2");
    if (CkXmlW_getLastMethodSuccess(xml) == TRUE) {
        wprintf(L"Found the record where PartNumber = 2.\n");
        wprintf(L"%s\n",CkXmlW_getXml(foundRec));

        // Let's examine the ETag for this record...
        wprintf(L"ETag for PartNumber 2 = %s\n",CkXmlW_getChildContent(foundRec,L"ETag"));
        CkXmlW_Dispose(foundRec);
    }
    else {
        wprintf(L"No record exists where PartNumber = 2.\n");
    }

    // What if we want to find the record where ETag = "abc"?
    foundRec = CkXmlW_FindNextRecord(xml,L"ETag",L"abc");
    if (CkXmlW_getLastMethodSuccess(xml) == TRUE) {
        wprintf(L"Found the record where ETag = abc\n");
        wprintf(L"%s\n",CkXmlW_getXml(foundRec));

        // Let's examine the PartNumber for this record...
        wprintf(L"Part number for Etag(abc) = %s\n",CkXmlW_getChildContent(foundRec,L"PartNumber"));
        CkXmlW_Dispose(foundRec);
    }
    else {
        wprintf(L"No record exists where ETag = abc.\n");
    }

    // Go back to the XML root..
    CkXmlW_GetRoot2(xml);


    CkXmlW_Dispose(xml);

    }