libxmlライブラリのxmlElementType


libxmlライブラリのxmlElementType
    xmlファイルを解析してDOMノードを巡回する場合は、nodePtr->type==XML_ELEMENT_NODEはノードの属性、内容を取りに行きます.
    xmlElementTypeタイプは次のように定義されます.
typedef enum {
    XML_ELEMENT_NODE=		1,
    XML_ATTRIBUTE_NODE=		2,
    XML_TEXT_NODE=		3,
    XML_CDATA_SECTION_NODE=	4,
    XML_ENTITY_REF_NODE=	5,
    XML_ENTITY_NODE=		6,
    XML_PI_NODE=		7,
    XML_COMMENT_NODE=		8,
    XML_DOCUMENT_NODE=		9,
    XML_DOCUMENT_TYPE_NODE=	10,
    XML_DOCUMENT_FRAG_NODE=	11,
    XML_NOTATION_NODE=		12,
    XML_HTML_DOCUMENT_NODE=	13,
    XML_DTD_NODE=		14,
    XML_ELEMENT_DECL=		15,
    XML_ATTRIBUTE_DECL=		16,
    XML_ENTITY_DECL=		17,
    XML_NAMESPACE_DECL=		18,
    XML_XINCLUDE_START=		19,
    XML_XINCLUDE_END=		20
#ifdef LIBXML_DOCB_ENABLED
   ,XML_DOCB_DOCUMENT_NODE=	21
#endif
} xmlElementType;

    使用法は次のとおりです.   
xmlNodePtr root = xmlDocGetRootElement(doc);
if (root == NULL) {
	xmlFreeDoc(doc);
}

xmlNodePtr nodePtr = root->xmlChildrenNode;
while (nodePtr) {
	//      XML_ELEMENT_NODE      
	if (nodePtr->type == XML_ELEMENT_NODE) {		
		xmlChar *attrName    = xmlGetProp(nodePtr, (const xmlChar *)"name");
		xmlChar *attrPort    = xmlGetProp(nodePtr, (const xmlChar *)"port");
		xmlChar *attrDeviceIP= xmlGetProp(nodePtr, (const xmlChar *)"deviceIp");
	}	
	nodePtr = nodePtr->next;
}

xmlFreeDoc(doc);