- - PR -
属性を取得したい
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-08-13 08:12
MSXML(msxml4.dll)、VC++6.0(SP5)、win2000
まずはじめに、本件マルチポストとなることをお詫びいたします。 http://forums.belution.com/ja/xml/000/000/57.shtml #投稿数少なく、解決しそうになかったので。 さてさて、 <MYTAG x="100" y="200" z="300"/>の場合、「100」「200」「300」 をそれぞれ取得するにはどうしたらよいのでしょうか? (xmlファイルは、setAttributeで出力したものです) http://forums.belution.com/ja/xml/000/000/04.shtml http://forums.belution.com/ja/xml/000/000/16.shtml を参考にしたのですが、 map->getNamedItem( name, &pAttrNode ); のところで下記のコンパイルエラーが発生してしまいます。(VC++6.0) 「error C2660: 'getNamedItem' : 関数が不正な 2 個の実引数をともなって呼び出されました。」 原因、ご存知のかたアドバイスお願いいたします。 | ||||||||
|
投稿日時: 2005-08-15 17:22
本件、原因ご存知の方はいらっしゃいませんか?
至急XMLに対応しなければならなくなってしまいました。 #属性の読込ができないのであれば、エレメントに変更?? もし、ヒントでもあればよろしくお願いいたします。 | ||||||||
|
投稿日時: 2005-08-15 17:37
MSXMLは使った事ありませんが、お急ぎみたいなので質問を見た時に思ったちょっとした疑問を。
getAttributeとか、get_attributeという感じのメソッドありませんか? (普通は、set=設定する get=取得する という感じでメソッドが決まっているのでリファレンスを見るまでも無く勘でメソッドを使ってみると大抵使えたりします。エラーが出てもそのエラーを見れば、メソッド自体が無いのか引き数が間違っているのかのヒントが出てますし。) (てか、「xmlファイルは、setAttributeで出力したものです」というのが何を意味しているか分かりませんので大外ししてるかも^^;) | ||||||||
|
投稿日時: 2005-08-15 18:11
冬寂さん、早速のレスありがとうございます。
get_attributes()というメソッドはあります。 サンプルでは、get_attributes()→getNamedItem()→get_nodeValue() を使って属性を取得していたのですが、getNamedItem()のところで、 コンパイルエラーとなってしまっている状況です。 エラーとしては、引数の数が間違っているようで、 引数には属性の名称だけを指定するんではないかという事はわかったのですが、 その後どうしていいものやら・・・ 色々検索してみても、XSXML+VCを使ったもので、引数が一つのものなどなく 途方にくれているしだいです・・・ | ||||||||
|
投稿日時: 2005-08-15 18:35
たぶん、これ (「getnameditem c++」で検索した結果) #たぶん、C++を入れたディレクトリのincludeに色々なヘッダが入っているので暇なら読んでみると色々勉強になると思う。 | ||||||||
|
投稿日時: 2005-08-15 19:37
冬寂さん、レスありがとうございます。
折角探していただいたのですが、実はその親のスレ(http://forums.belution.com/ja/xml/000/000/16.shtml)を 参考にしていまして・・・ getNamedItem()の後に、 pAttrNode->get_nodeValue( &val ); としているのですが、 getNamedItem()の引数が1つとなると、「pAttrNode」の値は どうやって設定されるのだろうかという疑問も残っていたり・・・ | ||||||||
|
投稿日時: 2005-08-15 20:42
最初に言っておいたように、MSXMLは使った事無い(というより、Visual C自体使った事無いので)これ以上力になれないと思いますが、気づいた事だけ。
こういう時こそ、リファレンスの出番なのでは? 後、参考記事の所に、
と書いてあった箇所は試してみましたか? (たぶん、CとC++の違いが関数の引き数の違いに表れているのだと思う。) (どういうトリックを使って同じ関数をCとC++で使ってるのか?とかは、ヘッダ見ると分かる・・・はず。) (ごちゃごちゃしてるので、慣れるまで時間かかると思うけど。) | ||||||||
|
投稿日時: 2005-08-15 20:47
$ cat msxml1.cpp
#include <msxml2.h> int main(){ IXMLDOMNamedNodeMap* map; BSTR name; IXMLDOMNode* pAttrNode; map->getNamedItem( name, &pAttrNode ); return 0; } このコードでコンパイルとおらないなら includeするものがまちがってるのでは? |