我在C++中构建XML DOM文档。我的问题是这样的:我从我的文档中的元素执行XPATH查询,我知道它会返回另一个元素。 elementPtr-> selectSingleNode调用返回一个IXMLDOMNode。我如何获得对这个节点的属性的访问?如何从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
我选择了适合我问题的答案,而不是帮助我意识到我问了错误问题的答案。
感谢建议;我看着QueryInterface,但无法使它工作,我已将最新尝试添加到原始问题中;您能看到我正在做的事情有什么不妥? 谢谢 – Symmetric 2008-11-14 01:31:58
您已经指出我如此我的问题; QueryInterface调用是正确的,但是我的pParentNode为null,因为selectSingleNode调用失败。 pParentElement(pParentNode)调用是执行downcast的更好方法。 – Symmetric 2008-11-14 21:51:13