- PR -

XmlファイルのLoadについて

1
投稿者投稿内容
なりこ
ベテラン
会議室デビュー日: 2005/06/09
投稿数: 61
投稿日時: 2006-11-30 14:38
いつもおせわになっています。

実行ファイルのexeが存在している同じパスにxmlファイルを置き、
xmlファイルを以下のようにloadしてプログラム内で使用しています。

XmlDocument doc = new XmlDocument();
doc.Load("test.xml");

通常は問題なくexeが存在する同じパスのtest.xmlファイルを参照するのですが
openFileDialogでまったく別のパスを選択する処理を行った後で
xmlファイルのLoadを再度行うとopenFileDialogで選択したパス先の
test.xmlを参照しようとしてエラーになります。(Path.GetFullPath(".")でパス確認)

openFileDialogを使用するとルートパスが変わってしまうものなんでしょうか?
また、exeファイルが存在しているパスを変数に退避しておく方法以外で
常にexeファイルの存在パスをルートにしてxmlファイルを参照することは
出来るでしょうか?
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-11-30 14:46
Application.StartupPath プロパティで絶対パスにしましょう。

# XML ファイルだとか Load メソッドだとかは本題と関係なさそうですね。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
HIRO
大ベテラン
会議室デビュー日: 2002/06/21
投稿数: 109
投稿日時: 2006-11-30 14:55
過去に同じ経験をしたことがあります。
じゃんぬねっとさんが仰るように絶対パスにしてあげるのが良いですね。

doc.Load(Path.Combine(Applicaion.StartupPath, "test.xml");

みたいに
_________________
--------------------------------------------
HIRO's.NET PowerShell,VB.NET,C#のTipsを掲載しています
HIRO's.NET Blog PowerShell,VB.NET,C#を中心とした技術ネ
ダッチ
大ベテラン
会議室デビュー日: 2005/10/31
投稿数: 113
投稿日時: 2006-11-30 15:08
引用:

なりこさんの書き込み (2006-11-30 14:38) より:
openFileDialogを使用するとルートパスが変わってしまうものなんでしょうか?


ここだけに着目して回答します。

ルートパスというよりカレントディレクトリが変更されます。
変更されないようにするためにはダイアログの RestoreDirectory プロパティを True にしてあげるとカレントディレクトリが変更まえの状態に戻されます。
なりこ
ベテラン
会議室デビュー日: 2005/06/09
投稿数: 61
投稿日時: 2006-11-30 15:53
じゃんぬねっとさん、HIROさん、ダッチさん
ありがとうございます。

doc.Load(Path.Combine(Applicaion.StartupPath, "test.xml"));
の方法でエラーが出なくなりました。

ぶさいくろう
ぬし
会議室デビュー日: 2005/11/22
投稿数: 1232
お住まい・勤務地: 川崎市(は俺も含めてロクな人間が住んでないよw)
投稿日時: 2006-11-30 18:26
引用:

なりこさんの書き込み (2006-11-30 15:53) より:
じゃんぬねっとさん、HIROさん、ダッチさん
ありがとうございます。

doc.Load(Path.Combine(Applicaion.StartupPath, "test.xml"));
の方法でエラーが出なくなりました。


エラーが出なくなりましたって・・ちょっと微妙だなw
なぜでなくなったのかわかっているんだろうか
1

スキルアップ/キャリアアップ(JOB@IT)