Sample code for 30+ languages & platforms
Go

XML NewChildBefore

Demonstrates the Chilkat.NewChildBefore method.

Chilkat Go Downloads

Go
    success := false

    xml := chilkat.NewXml()

    xml.SetTag("order")
    xml.NewChild2("order_billing_info|price_list","Listino Italia")
    xml.NewChild2("order_billing_info|price_list_id","1")
    xml.NewChild2("order_billing_info|first_name","Francesco")

    fmt.Println(*xml.GetXml())

    // 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.
    if xml.HasChildWithTag("order_billing_info|customer_id") == true {
        fmt.Println("customer_id already exists, nothing to do...")
        xml.DisposeXml()
        return
    }

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

    // Get the "order_billing_info" element
    orderBillingInfo := xml.FindChild("order_billing_info")

    // Call NewChildBefore to add an XML element <customer_id> before <price_list>
    // First get the index of the element price_list
    index := orderBillingInfo.TagIndex("price_list")
    fmt.Println("index = ", index)

    // Add the "customer_id" element just before specified index.
    xCustId := orderBillingInfo.NewChildBefore(index,"customer_id","1234")
    xCustId.DisposeXml()
    orderBillingInfo.DisposeXml()

    fmt.Println(*xml.GetXml())

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

    xml.DisposeXml()