aboutsummaryrefslogtreecommitdiffstats
path: root/xmlreader.c
diff options
context:
space:
mode:
authorDaniel Veillard <veillard@src.gnome.org>2008-08-25 14:53:31 +0000
committerDaniel Veillard <veillard@src.gnome.org>2008-08-25 14:53:31 +0000
commitaa6de47ebf0d4f96ed83e06c79a870a4e9b5dd0e (patch)
tree12f0353b21360a010e0ca3ed7609df1c227e2168 /xmlreader.c
parentf4f4e4853a925905deb77a72a3311ab683fbeeb5 (diff)
downloadandroid_external_libxml2-aa6de47ebf0d4f96ed83e06c79a870a4e9b5dd0e.tar.gz
android_external_libxml2-aa6de47ebf0d4f96ed83e06c79a870a4e9b5dd0e.tar.bz2
android_external_libxml2-aa6de47ebf0d4f96ed83e06c79a870a4e9b5dd0e.zip
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
Diffstat (limited to 'xmlreader.c')
-rw-r--r--xmlreader.c18
1 files changed, 12 insertions, 6 deletions
diff --git a/xmlreader.c b/xmlreader.c
index 92b053ed..737fdbce 100644
--- a/xmlreader.c
+++ b/xmlreader.c
@@ -1847,17 +1847,22 @@ xmlTextReaderNextTree(xmlTextReaderPtr reader)
}
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 @@ xmlTextReaderNextTree(xmlTextReaderPtr reader)
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;