C++使用MSXML6获取XML结构中book节点id属性值的方法问询
你已经成功获取到book节点,接下来可以通过以下两种方式读取id属性值:
方法1:使用元素接口的getAttribute方法(推荐,写法更简洁)
将拿到的IXMLDOMNodePtr类型的book节点转为IXMLDOMElementPtr,直接调用方法读取指定属性:
// 把这段代码替换你原来的注释位置即可 MSXML::IXMLDOMElementPtr bookElem = bookholder; _variant_t idValue = bookElem->getAttribute(_T("id")); if (idValue.vt != VT_NULL) { // 窄字符环境用下面的输出 printf("book节点id属性值:%s\n", (LPCSTR)_bstr_t(idValue)); // 宽字符环境用下面的输出 // wprintf(L"book节点id属性值:%s\n", (LPCWSTR)_bstr_t(idValue)); }
方法2:通过节点属性集合读取
不需要转换节点类型,直接操作节点的属性集合获取指定属性:
MSXML::IXMLDOMNamedNodeMapPtr attrMap = bookholder->Getattributes(); MSXML::IXMLDOMNodePtr idAttr = attrMap->getNamedItem(_T("id")); if (idAttr != nullptr) { printf("book节点id属性值:%ws\n", idAttr->Gettext()); }
两种方法都可以正常输出你需要的bk101值,建议加上属性是否存在的判断逻辑,避免属性缺失时触发异常。
内容的提问来源于stack exchange,提问作者tharun thomas
相关产品推荐
相关产品推荐

