libxml库中的xmlElementType

libxml库中的xmlElementType

    解析xml文件遍历DOM结点的时候需要注意判断xmlElementType,只当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);

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值