DataFlex
DataFlex
Remove an XML Subtree
See more XML Examples
Demonstrates how to remove an XML subtree from an XML document.Chilkat DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
Handle hoXml
Variant vXml2
Handle hoXml2
String sNotUsed
String sTemp1
Move False To iSuccess
Get Create (RefClass(cComChilkatXml)) To hoXml
If (Not(IsComObjectCreated(hoXml))) Begin
Send CreateComObject of hoXml
End
Get ComLoadXmlFile Of hoXml "qa_data/xml/osszes.xml" To iSuccess
// The XML file we're loading contains this:
// <?xml version="1.0" encoding="iso-8859-2" ?>
// <EXAMPLE>
// <OSSZES>
// <ROW TYPE="INS">477953
// <NUMBER>05107003972</NUMBER>
// </ROW>
// <ROW TYPE="INS">477954
// <NUMBER>05107001342</NUMBER>
// </ROW>
// <ROW TYPE="INS">477955
// <NUMBER>05107001342</NUMBER>
// </ROW>
// <ROW TYPE="INS">477956
// <NUMBER>05107000017</NUMBER>
// </ROW>**
// <ROW TYPE="INS">477957
// <NUMBER>05107002182</NUMBER>
// </ROW>
// </OSSZES>
// </EXAMPLE>
//
// We wish to remove this subtree:
// <ROW TYPE="INS">477956
// <NUMBER>05107000017</NUMBER>
// </ROW>
// Get another reference to the XML document.
Get ComGetSelf Of hoXml To vXml2
If (IsComObject(vXml2)) Begin
Get Create (RefClass(cComChilkatXml)) To hoXml2
Set pvComObject Of hoXml2 To vXml2
End
// Navigate to the node that is the root of the subtree to be deleted.
// In this case, we wish to find the node having tag "ROW" with content "477956"
Get ComChilkatPath Of hoXml2 "OSSZES|/C/ROW,*477956*|$" To sNotUsed
// Examine the xml2, it should be just the subtree.
Get ComGetXml Of hoXml2 To sTemp1
Showln sTemp1
// Now detach xml2 from the it's XML document.
// xml2 will now be it's own XML document.
Send ComRemoveFromTree To hoXml2
// Examine our original XML document. The subtree is removed:
Get ComGetXml Of hoXml To sTemp1
Showln sTemp1
Send Destroy of hoXml2
End_Procedure