I am use libxml2 for XML parsing. The sample code on the libxml website are hard to follow and seem to lack some details. I arrived at the following code by Googling so I don't even think it's the proper way to do it, but it worked in the sample learning program I wrote, but not this one. I still don't know the proper way to use libxml in C++ so I'm running in the dark and hoping I hit something useful.
The XML file loads correctly and when this function outputs root->name correctly, but then when it goes through the children it just outputs text at cur->name and I don't know why. I have to put the counter in there to stop it from going into an infinite loop. I read somewhere white space in the XML file might cause this, but I don't know what to do. I just want the part name and ID.
xmlNode *cur = root;
cur = cur->xmlChildrenNode;
ofstream out;
out.open("errorlog.txt", ios::app);
out << "attempting reading current node\n";
out << "root: " << root->name << endl;
int counter = 0;
// advance until it hits stars
while(cur != NULL && counter < 10){
if ((!xmlStrcmp(cur->name, (const xmlChar *)"parts")))
    break;
    cur->next;
    counter++;
}
out << "counter: " << counter << endl;
out << "child: " << cur->name << endl;
This is the XML file I'm using:
<?xml version="1.0" encoding="utf-8"?>
<netlist>
    <parts>
        <part name="part10">
            <attribute name="id">1</attribute>
        </part>
        <part name="part20">
            <attribute name="id">2</attribute>
        </part>
        <part name="part30">
            <attribute name="id">3</attribute>
        </part>
    </parts>
    <junk>
        <stuff id="3" />
        <stuff id="4" />
        <stuff id="5" />
    </junk>
</netlist>