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