Example #1
0
static void XMLCALL expatStartElementHandler(void *userData, const XML_Char *name, const XML_Char **atts)
{
    MyUserData* myUserData = static_cast<MyUserData*>(userData);
    assert(myUserData);
    XMLHandler* handler = myUserData->handler;
    const UTFConverter& converter = myUserData->converter;
    assert(handler);
    assert(converter);
    std::string& s0 = myUserData->s0;
    std::string& s1 = myUserData->s1;

    XMLAttributes attributes;
    for (const XML_Char**p = atts; *p; p += 2)
    {
        assert(p[0] && p[1]);
        s0 = p[0];
        s1 = p[1];
        attributes.setValue(converter(s0, s0), converter(s1, s1));
    }

    s0 = name;
    handler->startElement(converter(s0, s0), attributes);
}