我正在用 C++ 构建一个 XML DOM 文档。我的问题是:我从文档中的一个元素执行 XPATH 查询,我知道它会返回另一个元素。elementPtr->selectSingleNode 调用返回一个 IXMLDOMNode。如何访问该节点的属性?
我的一部分想要将节点向下转换为元素,但我无法让演员工作。
我试过
MSXML2::IXMLDOMElementPtr pParentElement;
pParentNode->QueryInterface(__uuidof(MSXML2::IXMLDOMElement),
(void**) &pParentElement);
这会导致以下运行时错误:
0x0057cc58 _com_error::`scalar deleting destructor'(unsigned int)
我尝试的另一条路线是只使用节点:
MSXML2::IXMLDOMNodePtr pParentNode =
pParameterElement->selectSingleNode("parent");
MSXML2::IXMLDOMNamedNodeMap* pParentAttributes;
pParentNode->get_attributes(&pParentAttributes);
MSXML2::IXMLDOMNodePtr pCategoryNameNode =
pParentAttributes->getNamedItem("Category");
VARIANT value;
pCategoryNameNode->get_nodeValue(&value);
CString categoryName = value;
这在“parentNode->get_attributes()”处失败。
好像我错过了什么;API 不应该这么难使用。
- 编辑 -
我缺少的是 selectSingleNode 调用失败,给我留下了一个 NULL 指针。你不能调用 QueryInterface ,也不能调用 get_attributes :P
我选择了适合我提出的问题的答案,而不是帮助我意识到我问错问题的答案。