Sample code for 30+ languages & platforms
Go

XMP Array Property - Bag, Seq, or Alt

See more XMP Examples

How to insert or update an XMP array property (bag, seq, or alt).

Chilkat Go Downloads

Go
    success := false

    // This requires the Chilkat API to have been previously unlocked.
    // See Global Unlock Sample for sample code.

    xmp := chilkat.NewXmp()

    // Load a JPG or TIF image file.
    // Sample JPG's with XMP metadata may be found at:
    // http://www.chilkatsoft.com/testData/xmp/sample1.jpg
    // http://www.chilkatsoft.com/testData/xmp/sample2.jpg
    // http://www.chilkatsoft.com/testData/xmp/sample3.jpg
    success = xmp.LoadAppFile("sample1.jpg")
    if success != true {
        fmt.Println(xmp.LastErrorText())
        xmp.DisposeXmp()
        return
    }

    fmt.Println("Num embedded XMP docs: ", xmp.NumEmbedded())

    // Assuming there is at least one, get the 1st.
    // (There is typically never more than one, but theoretically it's possible.)
    // xml is a Xml
    xml := xmp.GetEmbedded(0)
    if xmp.LastMethodSuccess() == true {

        // Create an object to hold one or more string values.
        sa := chilkat.NewStringArray()
        success = sa.Append("value_1")
        success = sa.Append("value_2")
        // ...

        success = xmp.AddArray(xml,"bag","Iptc4xmpCore:Chilkat",sa)
        if success != true {
            fmt.Println(xmp.LastErrorText())
        } else {
            // Save the JPG.
            success = xmp.SaveAppFile("modified.jpg")
            if success != true {
                fmt.Println(xmp.LastErrorText())
            }

        }

        xml.DisposeXml()

    } else {
        fmt.Println(xmp.LastErrorText())
    }


    xmp.DisposeXmp()
    sa.DisposeStringArray()