Comment puis-je accéder aux attributs de l'élément à partir d'un IXMLDOMNode?

Je suis en train de construire un DOM XML document en C++. Mon problème est le suivant: j'exécute une requête XPATH à partir d'un Élément dans mon Document, dont je sais qu'il sera de retour d'un autre Élément. Le elementPtr->selectSingleNode appel renvoie un IXMLDOMNode. Comment puis-je accéder aux attributs de ce nœud?

Partie de moi veut abattu le Nœud d'un Élément, mais je ne pouvais pas obtenir de la fonte de travail.

J'ai essayé

MSXML2::IXMLDOMElementPtr pParentElement;
pParentNode->QueryInterface(__uuidof(MSXML2::IXMLDOMElement), 
                            (void**) &pParentElement);

Qui résultats dans l'erreur d'exécution suivant:

0x0057cc58 _com_error::`scalar deleting destructor'(unsigned int)

De l'autre route que j'ai essayé était simplement utiliser les nœuds:

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;

Cela ne parvient pas à "parentNode->get_attributes()".

Il me semble que je suis absent quelque chose; l'API ne doit pas être dur à utiliser.

--edit--

Ce que je manquait, c'était que le selectSingleNode appel n'était pas, me laissant avec un pointeur NULL. Vous ne pouvez pas appeler QueryInterface sur ce, vous ne pouvez pas appeler get_attributes sur elle 😛

J'ai choisi la réponse qui correspond à la question que j'ai demandé, pas la réponse qui m'a aidé à réaliser que je m'étais posé la mauvaise question.

OriginalL'auteur |