Thanks for that. I guess my only comment is that doc->type and node->type are there for a reason. But I agree it's a bit disingenuous to be traversing up a tree via ->parent and discover that you've hit a node which is actually a xmlDoc.
In practice this means always having to have a special case test for node->parent == node->doc or node->parent->type == XML_ELEMENT_NODE/XML_DOCUMENT_NODE and so on before you assume it really is a xmlNode. I'm not even sure why the root node parent of a doc points to the xmlDoc given that there is a node->doc value to use if you want it. On 04May13 07:35, Nikita Churaev wrote: }this gives out an error: } }#include <libxml/parser.h> }#include <libxml/tree.h> }#include <stdio.h> } }int }main (int argc, char** argv) }{ } xmlDocPtr doc = xmlReadMemory("<doc/>", 6, "egg.xml", NULL, 0); } } /* XmlNode */ /* XmlDoc */ } printf("%s\n", (doc->children->parent == doc) ? "true" : "false"); } return 0; }} } }and this crashes on my machine (as xmlDoc has different fields than }xmlName): } }#include <libxml/parser.h> }#include <libxml/tree.h> }#include <stdio.h> } }int }main (int argc, char** argv) }{ } xmlDocPtr doc = xmlReadMemory("<doc/>", 6, "egg.xml", NULL, 0); } } if (doc->children->parent->ns && doc->children->parent->ns->href) } printf("%s\n", doc->children->parent->ns->href); } } return 0; }} -- Callum Gibson @ home _______________________________________________ xml mailing list, project page http://xmlsoft.org/ xml@gnome.org https://mail.gnome.org/mailman/listinfo/xml