我在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