You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 23:15:04