[xml] traverse the XML tree but contents and attributes are emmpty

Date view Thread view Subject view Author view

From: Wang, Hai (hwang@accuris.ie)
Date: Thu Dec 07 2000 - 04:57:22 EST


Hello everybody,
        I have got a problem with gnome parser, I tried to parse a XML doc
from memory, it was good, but when I tried to traverse the xml tree in
xmlDocPtr to get all the nodes and print out their names, attributesname and
contents, I find the following problems:
1. Node name is correct, but with text node, (I want to get rid of the text
node).
2. attributes are empty
3 contents are all empty.

The part of my codes are as follows:

//-----------Parse XML file from memory-----------------------
        FILE* f;
          char* filename = argv[1];
          f=fopen(filename, "r");
         

          int res, size = 102400;
          char chars[102400];
          res = fread(chars,1, 102400, f);

          xmlDocPtr xml_xmlDocPtr;
          const xmlChar* list[102400];

          xml_xmlDocPtr = xmlParseMemory(chars, res);

          if(xml_xmlDocPtr == NULL)
          {
                  return -1;
          }

//-----------------------------------end of
parsing-------------------------------------

//-----------------printing-------------------------------------------------
---------------
        if(xml_xmlDocPtr != NULL)
          {
                  node = xmlDocGetRootElement(xml_xmlDocPtr);
                  
              printsubnodename(node);

          }

void printsubnodename(xmlNodePtr parentnode)
{
                  xmlNodePtr currentnode;
                  if(parentnode == NULL)
                  {
                        return;
                  }
                  currentnode = parentnode->children;

                  while(currentnode != NULL)
                  {

                          
                          printf("nodename: %s\n", currentnode->name);
                          printf("\t node content: %s\n",
currentnode->content);
                          printattriname(currentnode);
                          currentnode = currentnode->next;
                        
                  }
}

void printattriname(xmlNodePtr currentnode)
{
        if(currentnode == NULL)
        {
                return;
        }

        xmlAttr* nodeattr = currentnode->properties;

        while( nodeattr != NULL) // all empty ?????
        {
                printf("\t\t preporty name: %s\n", nodeattr->name);
                nodeattr = nodeattr->next;
        }
}

//--------------------------------------------------------------------------
----------------

I just wonder if there is an existing approaches to do this job, I
appreciate any hints and help.

Thank you
!
Hai Wang

----
Message from the list xml@rpmfind.net
Archived at : http://xmlsoft.org/messages/
to unsubscribe: echo "unsubscribe xml" | mail  majordomo@rpmfind.net


Date view Thread view Subject view Author view

This archive was generated by hypermail 2b29 : Thu Dec 07 2000 - 05:43:49 EST