Sample code for 30+ languages & platforms
Node.js

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 Node.js Downloads

Node.js
NODEJS_PRELUDE

function chilkatExample() {

    var success = false;

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

    var xmp = new chilkat.Xmp();

    //  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) {
        console.log(xmp.LastErrorText);
        return;
    }

    console.log("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: Xml
    var xml;
    xml = xmp.GetEmbedded(0);
    if (xmp.LastMethodSuccess == true) {

        //  Create an object to hold one or more string values.
        var sa = new chilkat.StringArray();
        success = sa.Append("value_1");
        success = sa.Append("value_2");
        //  ...

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

        }

    }
    else {
        console.log(xmp.LastErrorText);
    }


}

chilkatExample();