Added option to not print text nodes while Printing.
authorkim <kim@3cdefd35-fc62-479d-8e8d-bae585ffb9ca>
Thu, 15 Apr 2010 07:25:41 +0000 (07:25 +0000)
committerkim <kim@3cdefd35-fc62-479d-8e8d-bae585ffb9ca>
Thu, 15 Apr 2010 07:25:41 +0000 (07:25 +0000)
git-svn-id: svn+ssh://idea.nguyen.vg/svn/sxsi/trunk/XMLTree@783 3cdefd35-fc62-479d-8e8d-bae585ffb9ca

XMLTree.cpp
XMLTree.h

index 174c94c..e23a06a 100644 (file)
@@ -941,18 +941,11 @@ bool XMLTree::IsOpen(treeNode x) { return fast_inspect(Par,x); }
 \r
 //WARNING this uses directly the underlying implementation for plain text\r
 \r
-void XMLTree::Print(int fd,treeNode x){\r
+void XMLTree::Print(int fd,treeNode x, bool no_text){\r
   \r
   int newfd = dup(fd);\r
   stream = fdopen(newfd,"wa");\r
-  /*  if (stream_fd != fd){\r
-    if (stream != NULL)\r
-      fclose(stream);\r
-    int newfd = dup(fd);\r
-    stream = fdopen(newfd,"wa");\r
-    stream_fd = fd;\r
-    };\r
-  */\r
+\r
 \r
   FILE* fp = stream;\r
   treeNode fin = fast_find_close(Par,x);\r
@@ -979,14 +972,17 @@ void XMLTree::Print(int fd,treeNode x){
  std::stack<uchar*> st;\r
  while (n <= fin){\r
    if (fast_inspect(Par,n)){\r
-     if (tag == PCDATA_TAG_ID) {       \r
+     if (tag == PCDATA_TAG_ID  ) {       \r
        //       fputs((const char*) (GetText(MyTextUnsafe(n))),fp);\r
-      \r
+       if (no_text)\r
+        fputs("<$/>",fp);\r
+       else{\r
        read = fprintf(fp,"%s",(const char*) current_text);\r
        current_text += (read + 1);\r
-\r
+       }\r
        n+=2; // skip closing $\r
        tag = Tag(n);\r
+      \r
      }\r
      else {\r
 \r
@@ -1004,11 +1000,15 @@ void XMLTree::Print(int fd,treeNode x){
             fputs((const char*) &(GetTagNameByRef(Tag(n))[3]),fp);\r
             fputs("=\"",fp);\r
             n++;\r
+            if (no_text)\r
+              fputs("<$@/>",fp);\r
+            else{\r
             read = fprintf(fp,"%s",(const char*) current_text);\r
             current_text += (read + 1);\r
             //fputs((const char*) GetText(MyTextUnsafe(n)),fp);\r
             fputc('"',fp);\r
-            n+=3; //close @$ @@                     \r
+            }\r
+            n+=3; //close @$ @@                             \r
           };\r
           fputc('>',fp);\r
           n++;\r
index 1216562..00ad143 100644 (file)
--- a/XMLTree.h
+++ b/XMLTree.h
@@ -472,7 +472,8 @@ public:
 \r
 \r
    /** Print procedure */\r
-   void Print(int fd,treeNode x);\r
+   void Print(int fd,treeNode x, bool no_text);\r
+   void Print(int fd,treeNode x) { Print(fd,x,false); }\r
 \r
 };\r
 \r