Sample code for 30+ languages & platforms
Unicode C

AddAttribute - Insert New Attribute in an XML Node

Demonstrates adding an name=value attribute to an XML element.

This example uses the XML sample file here: sample1.xml. The sample1.xml file contains this content:

Chilkat Unicode C Downloads

Unicode C
#include <C_CkXmlW.h>

void ChilkatSample(void)
    {
    BOOL success;
    HCkXmlW xml;
    BOOL bFound;
    int numChildren;
    int i;

    success = FALSE;

    xml = CkXmlW_Create();

    success = CkXmlW_LoadXmlFile(xml,L"qa_data/xml/sample1.xml");
    if (success != TRUE) {
        wprintf(L"%s\n",CkXmlW_lastErrorText(xml));
        CkXmlW_Dispose(xml);
        return;
    }

    //  Navigate to the "books" element:
    bFound = CkXmlW_FindChild2(xml,L"books");
    if (bFound == FALSE) {
        wprintf(L"No books child found!\n");
        CkXmlW_Dispose(xml);
        return;
    }

    numChildren = CkXmlW_getNumChildren(xml);

    i = 0;
    while (i < numChildren) {

        //  Navigate to the Nth book 
        CkXmlW_GetChild2(xml,i);

        //  Display the book title:
        wprintf(L"%s\n",CkXmlW_getAttrValue(xml,L"title"));

        //  Add a new integer attribute:
        //  Should never fail..
        CkXmlW_AddAttributeInt(xml,L"bookId",i);

        //  Add a new unread="yes" attribute:
        CkXmlW_AddAttribute(xml,L"unread",L"yes");

        //  Navigate back up to the parent:
        CkXmlW_GetParent2(xml);

        i = i + 1;
    }

    //  Navigate back to the document root:
    CkXmlW_GetRoot2(xml);

    //  Save the updated document:
    success = CkXmlW_SaveXml(xml,L"modified.xml");
    if (success != TRUE) {
        wprintf(L"%s\n",CkXmlW_lastErrorText(xml));
        CkXmlW_Dispose(xml);
        return;
    }

    wprintf(L"%s\n",CkXmlW_getXml(xml));


    CkXmlW_Dispose(xml);

    }