applied patch from Aswin to fix tree skipping fixed a comment and added a
* xmlreader.c: applied patch from Aswin to fix tree skipping
* include/libxml/entities.h entities.c: fixed a comment and
added a new xmlNewEntity() entry point
* runtest.c: be less verbose
* tree.c: space and tabs cleanups
daniel
svn path=/trunk/; revision=3774
diff --git a/xmlreader.c b/xmlreader.c
index 92b053e..737fdbc 100644
--- a/xmlreader.c
+++ b/xmlreader.c
@@ -1847,17 +1847,22 @@
}
if (reader->state != XML_TEXTREADER_BACKTRACK) {
- if (reader->node->children != 0) {
- reader->node = reader->node->children;
- reader->depth++;
+ /* Here removed traversal to child, because we want to skip the subtree,
+ replace with traversal to sibling to skip subtree */
+ if (reader->node->next != 0) {
+ reader->node = reader->node->next;// Move to sibling if present,skipping sub-tree
+ //reader->depth++;
reader->state = XML_TEXTREADER_START;
return(1);
}
-
+
+ /* if reader->node->next is NULL mean no subtree for current node,
+ so need to move to sibling of parent node if present */
if ((reader->node->type == XML_ELEMENT_NODE) ||
(reader->node->type == XML_ATTRIBUTE_NODE)) {
reader->state = XML_TEXTREADER_BACKTRACK;
- return(1);
+ xmlTextReaderRead(reader);// This will move to parent if present
+ //return(xmlTextReaderReadTree(reader));
}
}
@@ -1876,7 +1881,8 @@
reader->node = reader->node->parent;
reader->depth--;
reader->state = XML_TEXTREADER_BACKTRACK;
- return(1);
+ xmlTextReaderNextTree(reader); //Repeat process to move to sibling of parent node if present
+ //return(1);
}
reader->state = XML_TEXTREADER_END;