Sample code for 30+ languages & platforms
DataFlex

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 DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Handle hoXml
    Boolean iSuccess
    Variant vFoundRec
    Handle hoFoundRec
    String sTemp1
    Boolean bTemp1

    Get Create (RefClass(cComChilkatXml)) To hoXml
    If (Not(IsComObjectCreated(hoXml))) Begin
        Send CreateComObject of hoXml
    End

    Get ComLoadXmlFile Of hoXml "qa_data/xml/multipartUpload.xml" To iSuccess

    // Position ourselves at the 1st record.
    Get ComGetChild2 Of hoXml 0 To iSuccess

    Get ComFindNextRecord Of hoXml "PartNumber" "2" To vFoundRec
    If (IsComObject(vFoundRec)) Begin
        Get Create (RefClass(cComChilkatXml)) To hoFoundRec
        Set pvComObject Of hoFoundRec To vFoundRec
    End
    Get ComLastMethodSuccess Of hoXml To bTemp1
    If (bTemp1 = True) Begin
        Showln "Found the record where PartNumber = 2."
        Get ComGetXml Of hoFoundRec To sTemp1
        Showln sTemp1

        // Let's examine the ETag for this record...
        Get ComGetChildContent Of hoFoundRec "ETag" To sTemp1
        Showln "ETag for PartNumber 2 = " sTemp1
        Send Destroy of hoFoundRec
    End
    Else Begin
        Showln "No record exists where PartNumber = 2."
    End

    // What if we want to find the record where ETag = "abc"?
    Get ComFindNextRecord Of hoXml "ETag" "abc" To vFoundRec
    If (IsComObject(vFoundRec)) Begin
        Get Create (RefClass(cComChilkatXml)) To hoFoundRec
        Set pvComObject Of hoFoundRec To vFoundRec
    End
    Get ComLastMethodSuccess Of hoXml To bTemp1
    If (bTemp1 = True) Begin
        Showln "Found the record where ETag = abc"
        Get ComGetXml Of hoFoundRec To sTemp1
        Showln sTemp1

        // Let's examine the PartNumber for this record...
        Get ComGetChildContent Of hoFoundRec "PartNumber" To sTemp1
        Showln "Part number for Etag(abc) = " sTemp1
        Send Destroy of hoFoundRec
    End
    Else Begin
        Showln "No record exists where ETag = abc."
    End

    // Go back to the XML root..
    Send ComGetRoot2 To hoXml


End_Procedure