• ベストアンサー

VB.2005でXMLを読み込む時のパス設定

Javaで作成されたXMLをVB.net2005で読み取る際にVBでのXMLへのパス指定に関する質問です。開発環境はVisualStadio2005です。 javaで「D\Sample.xml」(適当なフォルダーに)を吐き出し。 ***VB***↓ Imports System.Xml Module Module1 Sub Main(ByVal args() As String) 'XMLファイルの読取り Dim xmlRdr As New XmlTextReader(args(0).Trim()) xmlRdr.Read() Console.WriteLine("タグ名:" + xmlRdr.LocalName) Console.WriteLine("値:" + xmlRdr.ReadString()) xmlRdr.Close() EnD Sub End Module プロジェクトのプロパティページのデバッグでコマンドライン引数指定で「D\Sample.xml」を指定。 しかし、読み込まれるのは\objの\Releaseと\のDebug上のxmlを読み込んでしまいます。しかも自動バックアップ?の関係で上記コードに無い作動(上記だと読み込みだけだが、先に作ったXML作成モジュールを実行してしまう)でXMLを自動作成してしまいます。 好きな場所のファイル名を指定させる方法を教えて下さい。 普段はEclipse+Javaで開発を行っていてEclipseのパス設定感覚ではうまくいかないのですか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

> コマンドライン引数指定は相対パスを指定するみたいなのですね。 いえ、コマンドラインで絶対パスを指定することも出来ます。 開始オプションのコマンドライン引数に「D:\Sample.xml」と書かれていれば、それは絶対パスです。 この状態でデバッグを開始すると Sub Main(ByVal args() As String) このメソッドの引数である args(0) には "D:\Sample.xml" という文字列が入ります。それでもなお例外が発生したのであれば、ファイルが存在しない・あるいは開けないかXmlの構造が間違っているか、のどちらかでしょう。例外が発生しているのであれば、その理由は分かると思います。 パスは相対パスであれ絶対パスであれ、単なる文字列に過ぎません。コマンドラインも単なる文字列ですから、相対・絶対の両方が指定できます。コマンドラインで与えられたパスをどう扱うかはプログラムしだいです。 誤解されているといけないので念のため。

その他の回答 (2)

回答No.2

> 上記だと読み込みだけだが、先に作ったXML作成モジュールを実行してしまう ご提示したSub Main()自体が実行されていないのでは? プロジェクトのプロパティで、アプリケーションのスタートアップオブジェクトの指定が間違っていないか確認してみてください。 D\Sample.xml が D:\Sample.xml の書き間違いであれば正しく読めるはずですし、「D\Sample.xml」という相対パスが指定されているのであれば、ファイルが見つからずに例外が出るはず。

marugori
質問者

補足

>D\Sample.xml が D:\Sample.xml の書き間違いであれば正しく読めるはずですし、「D\Sample.xml」という相対パスが指定されているのであれば、ファイルが見つからずに例外が出るはず。 書き間違いでした。例外もでました。すみません。 コマンドライン引数指定は相対パスを指定するみたいなのですね。 ありがとうございます。

回答No.1

相対パスで指定している以上,カレントディレクトリからの相対パスになります。 なので,特定の場所が決まっているのであれば,ちゃんと絶対パスで指定してください。 相対パスで指定する場合は,原則的にはbin\Debug\なりbin\Release\なりが基準になるので,そこからの相対パスで指定する必要があります。

marugori
質問者

補足

ありがとうございます。 絶対パスを指定しようとコマンドライン引数指定をしたのですが… 絶対パス指定するにはどうすればいいのでしょう?

関連するQ&A