XML統合スレッド (409レス)
XML統合スレッド http://mevius.5ch.net/test/read.cgi/db/1057207891/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
必死チェッカー(本家)
(べ)
自ID
レス栞
あぼーん
リロード規制
です。10分ほどで解除するので、
他のブラウザ
へ避難してください。
132: NAME IS NULL [] 04/11/18 17:34:48 ID:0itncWa8 こんにちは、MSXMLで不明な点がありましたので書き込みさせていただきます 環境は VS.NET 2003 VC++ & Win32 & MSXML です 以下のXMLを読み込む処理を作っていたのですが <?xml version="1.0" encoding="Shift_JIS"?> <root> <Data></Data> <Data>0</Data> <Data>1</Data> <Data>2</Data> </root> <Data>0</Data> からデータが取得できません 空と判断されているようです(<Data></Data>と等価?) http://mevius.5ch.net/test/read.cgi/db/1057207891/132
133: NAME IS NULL [] 04/11/18 17:35:20 ID:0itncWa8 以下に読み込みプログラムを記載しますのでご教授ください void hoge(void) { string filename = "datafile.xml"; // 上記のxmlファイルです if ( filename.size() ) { MSXML::IXMLDOMDocumentPtr doc; doc.CreateInstance(__uuidof(MSXML::DOMDocument)); doc->put_validateOnParse(VARIANT_TRUE); doc->put_async(VARIANT_TRUE); MSXML::IXMLDOMParseErrorPtr error = doc->parseError; if ( error->errorCode != 0 ) { if ( error->line ) { cerr << "line :" << error->line << endl; cerr << "position :" << error->linepos << endl; cerr << "source :" << (const char *) (error->srcText) << endl; } cerr << "URL :" << (const char *) (error->url) << endl; cerr << "code :" << error->errorCode << endl; cerr << "reason :" << (const char *) (error->reason) << endl; } if ( doc->load(filename.c_str()) ) { MSXML::IXMLDOMElementPtr root = doc->documentElement; MSXML::IXMLDOMAttributePtr attr; // attribute caption if ( (attr = root->getAttributeNode("Caption")) ) { string name = _bstr_t(attr->nodeValue); } // data element for ( MSXML::IXMLDOMElementPtr element = root->firstChild; element != 0; element = element->nextSibling ) { MSXML::IXMLDOMTextPtr text = element->firstChild; if ( text->nodeValue ) { string name = _bstr_t(element->nodeName); string value = _bstr_t(text->nodeValue); } } } } } 以上です。 http://mevius.5ch.net/test/read.cgi/db/1057207891/133
134: NAME IS NULL [] 04/11/18 17:36:28 ID:0itncWa8 実行時の動作は <Data></Data> <Data>0</Data> のとき if ( text->nodeValue ) { } ではじかれて <Data>1</Data> <Data>2</Data> の時は正常に if 内部に入れます 本来意図しているのは <Data>0</Data> <Data>1</Data> <Data>2</Data> のときに if 内部、なのですが・・・・ それともう一つ if ( (attr = root->getAttributeNode("Caption")) ) { としていますが <root> や <root Caption="aaaa"> などは問題ないのですが <root Caption=""> とすると attr->nodeValue 内部のオペレータで落ちてしまいます attributeの中身がないことをチェックする方法はないのでしょうか? 以上よろしくお願いします http://mevius.5ch.net/test/read.cgi/db/1057207891/134
135: 134 [] 04/11/18 21:35:59 ID:0itncWa8 自己解決しました http://mevius.5ch.net/test/read.cgi/db/1057207891/135
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.012s