PureBasic
PureBasic
XML Sort by Content
See more XML Examples
Demonstrates the SortByContent method.The input XML, available at http://www.chilkatsoft.com/data/fruitSort2.xml, is this:
<root>
<fruits>
<apples>
<apple>fuji</apple>
<apple>gala</apple>
<apple>granny smith</apple>
<apple>honeycrisp</apple>
<apple>mcintosh</apple>
</apples>
<fruit>banana</fruit>
<fruit>blackberry</fruit>
<fruit>blueberry</fruit>
<fruit>orange</fruit>
<fruit>pear</fruit>
</fruits>
</root>
Chilkat PureBasic Downloads
IncludeFile "CkXml.pb"
Procedure ChilkatExample()
success.i = 0
xml.i = CkXml::ckCreate()
If xml.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
xSortRoot.i
; The sample input XML is available at http://www.chilkatsoft.com/data/fruitSort2.xml
success = CkXml::ckLoadXmlFile(xml,"fruitSort2.xml")
If success <> 1
Debug CkXml::ckLastErrorText(xml)
CkXml::ckDispose(xml)
ProcedureReturn
EndIf
; Sort the direct children under the "fruits" node by tag:
xSortRoot = CkXml::ckFindChild(xml,"fruits")
; Sort in ascending order.
bAscending.i = 1
CkXml::ckSortByContent(xSortRoot,bAscending)
; Show the result:
Debug CkXml::ckGetXml(xml)
; Note: The "apples" node contains child nodes, but its
; text content is 0-length (empty). Therefore, when sorting in
; ascending order, it will be positioned before the direct
; children containing non-empty content.
; <root>
; <fruits>
; <apples>
; <apple>granny smith</apple>
; <apple>gala</apple>
; <apple>fuji</apple>
; <apple>mcintosh</apple>
; <apple>honeycrisp</apple>
; </apples>
; <fruit>banana</fruit>
; <fruit>blackberry</fruit>
; <fruit>blueberry</fruit>
; <fruit>orange</fruit>
; <fruit>pear</fruit>
; </fruits>
; </root>
; Sort the direct children under the "apples" node:
success = CkXml::ckFindChild2(xSortRoot,"apples")
CkXml::ckSortByContent(xSortRoot,bAscending)
Debug CkXml::ckGetXml(xml)
; <root>
; <fruits>
; <apples>
; <apple>fuji</apple>
; <apple>gala</apple>
; <apple>granny smith</apple>
; <apple>honeycrisp</apple>
; <apple>mcintosh</apple>
; </apples>
; <fruit>banana</fruit>
; <fruit>blackberry</fruit>
; <fruit>blueberry</fruit>
; <fruit>orange</fruit>
; <fruit>pear</fruit>
; </fruits>
; </root>
CkXml::ckDispose(xSortRoot)
CkXml::ckDispose(xml)
ProcedureReturn
EndProcedure