よろしくお願いします。
Visual Studio2005 C++の環境で
XMLファイルを扱う時のエラー処理についてご教授願います。
以下ソース
HRESULT hr;
CoInitialize(NULL);
try{
MSXML2::IXMLDOMDocument2Ptr pDoc;
hr = pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument));
SUCCEEDED(hr) ? 0 : throw err_no;
pDoc->async = VARIANT_FALSE;
/* XMLファイルのロード */
if((pDoc->load(stLB.File_name) !=VARIANT_TRUE)){
return err_no;
}
/* <STATION>をルート検索 */
INodeListPtr plSTATION = pDoc->getElementsByTagName("STATION");
IElementPtr peSTATION = plSTATION->Getitem(0);
/* <STATION>の属性取得 */
_variant_t vari_STATION = peSTATION->getAttribute("no");
/* <LB>の要素取得 */
IElementPtr peLB = peSTATION->
getElementsByTagName("LB")->Getitem(0);
_variant_t vari_LB = peLB->Gettext();
//variantオブジェクト破棄
VariantClear(&vari_STATION);
VariantClear(&vari_LB);
// COMライブラリの終了処理
CoUninitialize();
}catch(_com_error &err){
return err_no;
失礼しました、途中で送信してしまったので続きです。
}catch(_com_error &err){
return err_no;
}
return 0;
###################################
最初の質問であげたソース内容で
以下について
①XMLファイルが存在しないとき
②<STATION>タグが存在しない場合
<ABCDE>
<!--STATION no="0">
<LB>0000-00FF</LB>
</STATION-->
</ABCDE>
③<STATION>の属性が存在しないとき
<ABCDE>
<STATION>
<LB>0000-00FF</LB>
</STATION>
</ABCDE>
④<LB>タグが存在しないとき
<ABCDE>
<STATION no="0">
<AA>0000-00FF</AA>
</STATION-->
</ABCDE>
###############################################
①については対応できてると思うのですが、
そのほかの対応策としてはどう解決したらよいでしょうか。
また、そのほかエラー対策が甘そうな所がありましたらご指摘願います。
> そのほかの対応策としてはどう解決したらよいでしょうか。
どうしたいんですか? それはあなたが決めることではないんですか?
> そのほかエラー対策が甘そうな所がありましたらご指摘願います。
何を正しく/何を誤りとするか もまた、あなたが決めることではないんですか?
επιστημηさん失礼致しました。
知りたいエラー対策は
④<LB>タグが存在しないときの対策です。
<ABCDE>
<STATION no="0">
<AA>0000-00FF</AA>
</STATION-->
</ABCDE>
/* <LB>の要素取得 */
IElementPtr peLB = peSTATION->
getElementsByTagName("LB")->Getitem(0);
_variant_t vari_LB = peLB->Gettext();
よろしくお願いします。
タグが存在しない時のエラーですが、
}catch(_com_error &err){
でちゃんと検出できていました。
お騒がせ致しました。