- ctx.pull = XML_PULL_ETAG;
- ctx.flags |= XML_ALLOC_CHARS | XML_ALLOC_TAGS;
- }
- break;
- case XML_STATE_ETAG:
- printf("ETAG %s\n", ctx.node->name);
- if (!strcmp(ctx.node->name, "node"))
- {
- ctx.pull = XML_PULL_STAG | XML_PULL_ETAG;
- ctx.flags &= ~(XML_ALLOC_CHARS | XML_ALLOC_TAGS);
+ DBG("Switched to level 2");
+ while ((state = xml_next_state(ctx, XML_PULL_STAG | XML_PULL_ETAG)) == XML_STATE_STAG)
+ {
+ ctx->flags |= XML_ALLOC_CHARS | XML_ALLOC_TAGS;
+ if (xml_skip_element(ctx) == XML_STATE_ETAG)
+ {
+ DBG("Level 2 tag <%s>", ctx->node->name);
+ parse_element(ctx, ctx->node);
+ }
+ }
+ DBG("Exited level 2 in state %u", state);