[Expat-discuss] SAX and children node

Patos patos.legit at gmail.com
Fri Jul 21 22:47:09 CEST 2006


Hi,

I am trying to do a SAX parser on top of expat but I have some problem to
figure out if a node have children.
Im only able to resolve 2 of the 3 cases so I was wondering if someone could
help me.

Case 1 : <node att="value1"/> ok with that case.

Case 2: <node><child1/><child2/></node> thats ok.

Case 3 <node>textvalue</node>  <--- problem.

I dont know how to find out if its a node with children or a node with some
text value while im in the StartHandler.

There is what im doing :

void Reader::OnStartElement(const String &name, const char **atts)
{
    m_Depth++;
    Element *p = new Element(m_pCurrentReader, name);
    p->SetDepth(m_Depth);
    m_pCurrentReader->SetCurrentElement(p);
    for (int i = 0; atts[i]; i += 2)
    {
        p->AddAttribute(new Attribute(String(atts[i]), String(atts[i +
1])));
    }
    m_pCurrentReader->SetNodeComplete();
}

void Reader::OnEndElement(const String &name)
{
    Element *p = m_pCurrentReader->GetCurrentElement();
    p->SetHasChildren(m_Depth != p->GetDepth());
    m_Depth--;
    m_pCurrentReader->SetNodeComplete();
}

Maybe im not doing it the right way and I should try an other approach, plz
help me.

Patrick


More information about the Expat-discuss mailing list