Sample code for 30+ languages & platforms
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 C Downloads

C
#include <C_CkXml.h>

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

    success = FALSE;

    xml = CkXml_Create();

    success = CkXml_LoadXmlFile(xml,"qa_data/xml/sample1.xml");
    if (success != TRUE) {
        printf("%s\n",CkXml_lastErrorText(xml));
        CkXml_Dispose(xml);
        return;
    }

    //  Navigate to the "books" element:
    bFound = CkXml_FindChild2(xml,"books");
    if (bFound == FALSE) {
        printf("No books child found!\n");
        CkXml_Dispose(xml);
        return;
    }

    numChildren = CkXml_getNumChildren(xml);

    i = 0;
    while (i < numChildren) {

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

        //  Display the book title:
        printf("%s\n",CkXml_getAttrValue(xml,"title"));

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

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

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

        i = i + 1;
    }

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

    //  Save the updated document:
    success = CkXml_SaveXml(xml,"modified.xml");
    if (success != TRUE) {
        printf("%s\n",CkXml_lastErrorText(xml));
        CkXml_Dispose(xml);
        return;
    }

    printf("%s\n",CkXml_getXml(xml));


    CkXml_Dispose(xml);

    }