Sample code for 30+ languages & platforms
DataFlex

XML NewChildBefore

Demonstrates the Chilkat.NewChildBefore method.

Chilkat DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    Handle hoXml
    Variant vOrderBillingInfo
    Handle hoOrderBillingInfo
    Integer iIndex
    Variant vXCustId
    Handle hoXCustId
    String sTemp1
    Boolean bTemp1

    Move False To iSuccess

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

    Set ComTag Of hoXml To "order"
    Send ComNewChild2 To hoXml "order_billing_info|price_list" "Listino Italia"
    Send ComNewChild2 To hoXml "order_billing_info|price_list_id" "1"
    Send ComNewChild2 To hoXml "order_billing_info|first_name" "Francesco"

    Get ComGetXml Of hoXml To sTemp1
    Showln sTemp1

    // We now have the following XML:

    // <?xml version="1.0" encoding="utf-8"?>
    // <order>
    //     <order_billing_info>
    //         <price_list>Listino Italia</price_list>
    //         <price_list_id>1</price_list_id>
    //         <first_name>Francesco</first_name>
    //     </order_billing_info>
    // </order>

    // If there is no "customer_id" element under "order_billing_info", then add it.
    Get ComHasChildWithTag Of hoXml "order_billing_info|customer_id" To bTemp1
    If (bTemp1 = True) Begin
        Showln "customer_id already exists, nothing to do..."
        Procedure_Return
    End

    // Add the customer_id element just before the "price_list" element.

    // Get the "order_billing_info" element
    Get ComFindChild Of hoXml "order_billing_info" To vOrderBillingInfo
    If (IsComObject(vOrderBillingInfo)) Begin
        Get Create (RefClass(cComChilkatXml)) To hoOrderBillingInfo
        Set pvComObject Of hoOrderBillingInfo To vOrderBillingInfo
    End

    // Call NewChildBefore to add an XML element <customer_id> before <price_list>
    // First get the index of the element price_list
    Get ComTagIndex Of hoOrderBillingInfo "price_list" To iIndex
    Showln "index = " iIndex

    // Add the "customer_id" element just before specified index.
    Get ComNewChildBefore Of hoOrderBillingInfo iIndex "customer_id" "1234" To vXCustId
    If (IsComObject(vXCustId)) Begin
        Get Create (RefClass(cComChilkatXml)) To hoXCustId
        Set pvComObject Of hoXCustId To vXCustId
    End
    Send Destroy of hoXCustId
    Send Destroy of hoOrderBillingInfo

    Get ComGetXml Of hoXml To sTemp1
    Showln sTemp1

    // We now have:

    // <?xml version="1.0" encoding="utf-8"?>
    // <order>
    //     <order_billing_info>
    //         <customer_id>1234</customer_id>
    //         <price_list>Listino Italia</price_list>
    //         <price_list_id>1</price_list_id>
    //         <first_name>Francesco</first_name>
    //     </order_billing_info>
    // </order>


End_Procedure