Я создаю документ XML DOM на C ++. Моя проблема заключается в следующем: я выполняю запрос 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
Я выбрал ответ, который соответствует заданному вопросу, а не ответ, который помог мне понять, что я задал неправильный вопрос.