xmlDocPtr PluginsXmlParser::doc_ptr() { return doc_ptr_; }
int PluginsXmlParser::NextChildElement(xmlTextReaderPtr reader, int depth) {
- int ret = xmlTextReaderRead(reader);
- int cur = xmlTextReaderDepth(reader);
-
- while (ret == 1) {
- switch (xmlTextReaderNodeType(reader)) {
- case XML_READER_TYPE_ELEMENT:
- if (cur >= depth + 1) return 1;
- break;
- case XML_READER_TYPE_COMMENT:
- break;
- default:
-
- if (cur <= depth) return 0;
- break;
- }
+ int ret;
+ int cur;
+ int type;
+ do {
ret = xmlTextReaderRead(reader);
cur = xmlTextReaderDepth(reader);
- }
+ type = xmlTextReaderNodeType(reader);
+ } while (ret == 1 && (cur <= depth || type != XML_READER_TYPE_ELEMENT));
return ret;
}