From aa6de47ebf0d4f96ed83e06c79a870a4e9b5dd0e Mon Sep 17 00:00:00 2001 From: Daniel Veillard Date: Mon, 25 Aug 2008 14:53:31 +0000 Subject: 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 --- xmlreader.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) (limited to 'xmlreader.c') 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; -- cgit v1.2.3