From: kim Date: Thu, 15 Apr 2010 07:25:41 +0000 (+0000) Subject: Added option to not print text nodes while Printing. X-Git-Url: http://git.nguyen.vg/gitweb/?p=SXSI%2FXMLTree.git;a=commitdiff_plain;h=b2df171c52f1e6d35a8b131299e4a7f494520333 Added option to not print text nodes while Printing. git-svn-id: svn+ssh://idea.nguyen.vg/svn/sxsi/trunk/XMLTree@783 3cdefd35-fc62-479d-8e8d-bae585ffb9ca --- diff --git a/XMLTree.cpp b/XMLTree.cpp index 174c94c..e23a06a 100644 --- a/XMLTree.cpp +++ b/XMLTree.cpp @@ -941,18 +941,11 @@ bool XMLTree::IsOpen(treeNode x) { return fast_inspect(Par,x); } //WARNING this uses directly the underlying implementation for plain text -void XMLTree::Print(int fd,treeNode x){ +void XMLTree::Print(int fd,treeNode x, bool no_text){ int newfd = dup(fd); stream = fdopen(newfd,"wa"); - /* if (stream_fd != fd){ - if (stream != NULL) - fclose(stream); - int newfd = dup(fd); - stream = fdopen(newfd,"wa"); - stream_fd = fd; - }; - */ + FILE* fp = stream; treeNode fin = fast_find_close(Par,x); @@ -979,14 +972,17 @@ void XMLTree::Print(int fd,treeNode x){ std::stack st; while (n <= fin){ if (fast_inspect(Par,n)){ - if (tag == PCDATA_TAG_ID) { + if (tag == PCDATA_TAG_ID ) { // fputs((const char*) (GetText(MyTextUnsafe(n))),fp); - + if (no_text) + fputs("<$/>",fp); + else{ read = fprintf(fp,"%s",(const char*) current_text); current_text += (read + 1); - + } n+=2; // skip closing $ tag = Tag(n); + } else { @@ -1004,11 +1000,15 @@ void XMLTree::Print(int fd,treeNode x){ fputs((const char*) &(GetTagNameByRef(Tag(n))[3]),fp); fputs("=\"",fp); n++; + if (no_text) + fputs("<$@/>",fp); + else{ read = fprintf(fp,"%s",(const char*) current_text); current_text += (read + 1); //fputs((const char*) GetText(MyTextUnsafe(n)),fp); fputc('"',fp); - n+=3; //close @$ @@ + } + n+=3; //close @$ @@ }; fputc('>',fp); n++; diff --git a/XMLTree.h b/XMLTree.h index 1216562..00ad143 100644 --- a/XMLTree.h +++ b/XMLTree.h @@ -472,7 +472,8 @@ public: /** Print procedure */ - void Print(int fd,treeNode x); + void Print(int fd,treeNode x, bool no_text); + void Print(int fd,treeNode x) { Print(fd,x,false); } };