/* * xmldwalk.h : Interfaces, constants and types of the document traversing API.for XML * * this is heavily based upon the xmlTextReader streaming node API * of libxml2 by Daniel Veillard (daniel veillard com). In fact I * just copied and modified xmlreader.h * * So for license and disclaimer see the license and disclaimer of * libxml2. * * alfred mickautsch de */ #ifndef __XML_XMLDWALK_H__ #define __XML_XMLDWALK_H__ #ifdef __cplusplus extern "C" { #endif typedef enum { XML_DWALK_NONE = 0, XML_DWALK_START, XML_DWALK_BACKTRACK, XML_DWALK_END } xmlDocWalkerState; typedef struct _xmlDocWalker { xmlDocPtr doc; /* current document */ xmlNodePtr node; /* current node */ xmlNodePtr curnode; /* current attribute node */ int depth; /* depth of the current node */ xmlDocWalkerState state; /* state of the iterator */ } xmlDocWalker; typedef xmlDocWalker *xmlDocWalkerPtr; /* * Constructor & Destructor */ xmlDocWalkerPtr xmlNewDocWalker(xmlDocPtr doc); void xmlFreeDocWalker(xmlDocWalkerPtr iter); /* * Iterator Functions */ int xmlDocWalkerRewind(xmlDocWalkerPtr iter); int xmlDocWalkerStep(xmlDocWalkerPtr iter); int xmlDocWalkerAttributeCount(xmlDocWalkerPtr iter); int xmlDocWalkerDepth(xmlDocWalkerPtr iter); int xmlDocWalkerHasAttributes(xmlDocWalkerPtr iter); int xmlDocWalkerHasValue(xmlDocWalkerPtr iter); int xmlDocWalkerIsEmptyElement(xmlDocWalkerPtr iter); xmlChar *xmlDocWalkerLocalName(xmlDocWalkerPtr iter); xmlChar *xmlDocWalkerName(xmlDocWalkerPtr iter); int xmlDocWalkerNodeType(xmlDocWalkerPtr iter); xmlChar *xmlDocWalkerPrefix(xmlDocWalkerPtr iter); xmlChar *xmlDocWalkerNamespaceUri(xmlDocWalkerPtr iter); xmlChar *xmlDocWalkerBaseUri(xmlDocWalkerPtr iter); xmlChar *xmlDocWalkerValue(xmlDocWalkerPtr iter); xmlChar *xmlDocWalkerGetAttributeNo(xmlDocWalkerPtr iter, int no); xmlChar *xmlDocWalkerGetAttribute(xmlDocWalkerPtr iter, const xmlChar *name); xmlChar *xmlDocWalkerGetAttributeNs(xmlDocWalkerPtr iter, const xmlChar *localName, const xmlChar *namespaceURI); xmlChar *xmlDocWalkerLookupNamespace(xmlDocWalkerPtr iter, const xmlChar *prefix); int xmlDocWalkerMoveToAttributeNo(xmlDocWalkerPtr iter, int no); int xmlDocWalkerMoveToAttribute(xmlDocWalkerPtr iter, const xmlChar *name); int xmlDocWalkerMoveToAttributeNs(xmlDocWalkerPtr iter, const xmlChar *localName, const xmlChar *namespaceURI); int xmlDocWalkerMoveToFirstAttribute(xmlDocWalkerPtr iter); int xmlDocWalkerMoveToNextAttribute(xmlDocWalkerPtr iter); int xmlDocWalkerMoveToElement(xmlDocWalkerPtr iter); xmlNodePtr xmlDocWalkerCurrentNode(xmlDocWalkerPtr iter); xmlDocPtr xmlDocWalkerCurrentDoc(xmlDocWalkerPtr iter); #ifdef __cplusplus } //extern "C" #endif #endif /* __XML_XMLDWALK_H__ */