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
間違った質問をしたことに気付くのに役立った回答ではなく、質問に適合する回答を選択しました。