Source Code File 07-08_buffer

07-08_buffer.c

#include <stdio.h>
#include <stdlib.h>
#include <libxml/parser.h>

int main()
{
    const char filename[] = "sample.xml";
    xmlDocPtr doc;
    xmlNodePtr root,newnode;
    const xmlChar *element = (const xmlChar *)"nemesis";
    const xmlChar *value = (const xmlChar *)"Underdog";
    xmlBufferPtr buffer;

    doc = xmlParseFile(filename);
    if( doc==NULL )
    {
        fprintf(stderr,"Unable to process %s\n",filename);
        exit(1);
    }

    root = xmlDocGetRootElement(doc);
    newnode = xmlNewTextChild( root, NULL, element, value );

    buffer = xmlBufferCreate();
    xmlNodeDump(buffer,doc,root,4,1);
    printf("%s\n",buffer->content);

    xmlFreeDoc(doc);

    return(0);
}

Output

<?xml version="1.0" encoding="UTF-8"?>
<character>
        <firstName>Simon</firstName>
        <middleName>Bar</middleName>
        <lastName>Sinister</lastName>
        <address>
                <street>123 Evil Ave.</street>
                <city>Bigtown</city>
                <state>New York</state>
                <zip>12345</zip>
        </address>
        <isCartoon value="true"/>
        <IQ>213.5</IQ>
        <phone type="lab">212 555-1234</phone>
        <phone type="mobile">868 555-1234</phone>
        <assistant>Cad Lackey</assistant>
<nemesis>Underdog</nemesis></character>