- - PR -
非接続型 ADO.NET アプリケーションで XML を使用する方法
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2007-11-01 14:42
現在、C#(Microsoft Visual Studio 2003)にてフォームアプリケーションを開発しています。
XMLを読み込む処理があるため、XmlTextReaderメンバを使用し、 その結果をDataSetに代入したいです。 XMLファイルは、ローカルフォルダに存在するものを読み込みます。 完全にローカルで動作させるため、非接続型の処理をさせたいです。 下記URL(MSDN)の「非接続型 ADO.NET Windows アプリケーションを作成する」という箇所を見ましたが、 [Web 参照の追加] を行う際、「http://localhost/ProductsService/Service1.asmx 」を指定するように記述されています。 しかし、当方の環境にはこのasmxで終わる拡張子のファイルは存在しません。 http://support.microsoft.com/kb/307224/ja 完全にローカル環境のみで動作させる際の、 XML読み出し処理についてご教授いただきたいと思います。 よろしくお願いします。 |
|
投稿日時: 2007-11-01 14:50
こちらではないでしょうか。
Visual C# .NET を使用して XML データをデータセットに読み込む方法 http://support.microsoft.com/kb/311566/ |
|
投稿日時: 2007-11-01 14:54
一番簡単な方法は、最初はデータベースに必要なデータをいれておいて、そこから
ウィザードを使ってDataSetをつくり、そのDataSetをXML形式でテキストに保存して しまうことだと思います。 この方法で作成したXMLファイルならDataSetからメソッド一発で直接読み込んで 展開できます。 |
|
投稿日時: 2007-11-01 15:35
お返事ありがとうございます。
説明が足りなくてすみません。 補足させていただきます。 XMLを読み込む処理があるため、XmlTextReaderメンバを使用し、 その結果をDataSetに代入するところまでは実装しております。 しかし、PCの環境によっては、"The underlying connection was closed: An unexpected error occurred on a send." (Webservices) というエラーが発生することがあるのです。 (エラーメッセージが英語なのは、クライアントのPCに英語版の.NET Frameworkがインストールされているためです) このエラーを調べていくうちに、DataSetに原因があり、非接続型の処理を行っていないからではないか?と疑っています。 この点についても、ご教授いただきたいと思います。 よろしくお願いします。 |
|
投稿日時: 2007-11-01 16:25
DataSetを使っているだけでWebサービス関係のエラーがでるなんてことは考えられません。
何か他にWebサービスを呼び出してる処理とかないんですか? |
|
投稿日時: 2007-11-01 16:50
>どっとねっとふぁんさま
DataSetだけで、他にWebサービスは使っていません。 プログラムが動作しなかったマシンから得られた、 エラー ダイアログのメッセージをコピーします。 太字の部分を見て、DataSetが怪しいのではないかと疑っていました。 See the end of this message for details on invoking just-in-time (JIT) debugging instead of this dialog box. ************** Exception Text ************** System.Net.WebException: The underlying connection was closed: The request was canceled. at System.Net.HttpWebRequest.GetResponse() at System.Xml.XmlDownloadManager.GetNonFileStream(Uri uri, ICredentials credentials) at System.Xml.XmlDownloadManager.GetStream(Uri uri, ICredentials credentials) at System.Xml.XmlUrlResolver.GetEntity(Uri absoluteUri, String role, Type ofObjectToReturn) at System.Xml.Schema.DtdParser.ParseDocTypeDecl() at System.Xml.Schema.DtdParser.Parse() at System.Xml.XmlTextReader.ParseDtd(XmlScanner scanner) at System.Xml.XmlTextReader.ParseTag() at System.Xml.XmlTextReader.ParseRoot() at System.Xml.XmlTextReader.Read() at System.Xml.XmlReader.MoveToContent() at System.Data.DataSet.ReadXml(XmlReader reader, Boolean denyResolving) at System.Data.DataSet.ReadXml(String fileName) at 【プロジェクト名】.【フォーム名】.【フォーム名】_Load(Object sender, EventArgs e) at System.Windows.Forms.Form.OnLoad(EventArgs e) at System.Windows.Forms.Form.OnCreateControl() at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible) at System.Windows.Forms.Control.CreateControl() at System.Windows.Forms.Control.WmShowWindow(Message& m) at System.Windows.Forms.Control.WndProc(Message& m) at System.Windows.Forms.ScrollableControl.WndProc(Message& m) at System.Windows.Forms.ContainerControl.WndProc(Message& m) at System.Windows.Forms.Form.WmShowWindow(Message& m) at System.Windows.Forms.Form.WndProc(Message& m) at System.Windows.Forms.ControlNativeWindow.OnMessage(Message& m) at System.Windows.Forms.ControlNativeWindow.WndProc(Message& m) at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) ************** Loaded Assemblies ************** mscorlib Assembly Version: 1.0.5000.0 Win32 Version: 1.1.4322.2407 CodeBase: file:///c:/windows/microsoft.net/framework/v1.1.4322/mscorlib.dll ---------------------------------------- Lyra Assembly Version: 1.0.2861.28772 Win32 Version: 1.0.2861.28772 CodeBase: file:【EXEファイル】 ---------------------------------------- System.Windows.Forms Assembly Version: 1.0.5000.0 Win32 Version: 1.1.4322.2032 CodeBase: file:///c:/windows/assembly/gac/system.windows.forms/1.0.5000.0__b77a5c561934e089/system.windows.forms.dll ---------------------------------------- System Assembly Version: 1.0.5000.0 Win32 Version: 1.1.4322.2407 CodeBase: file:///c:/windows/assembly/gac/system/1.0.5000.0__b77a5c561934e089/system.dll ---------------------------------------- System.Drawing Assembly Version: 1.0.5000.0 Win32 Version: 1.1.4322.2032 CodeBase: file:///c:/windows/assembly/gac/system.drawing/1.0.5000.0__b03f5f7f11d50a3a/system.drawing.dll ---------------------------------------- System.Data Assembly Version: 1.0.5000.0 Win32 Version: 1.1.4322.2032 CodeBase: file:///c:/windows/assembly/gac/system.data/1.0.5000.0__b77a5c561934e089/system.data.dll ---------------------------------------- System.Xml Assembly Version: 1.0.5000.0 Win32 Version: 1.1.4322.2032 CodeBase: file:///c:/windows/assembly/gac/system.xml/1.0.5000.0__b77a5c561934e089/system.xml.dll ---------------------------------------- ************** JIT Debugging ************** To enable just in time (JIT) debugging, the config file for this application or machine (machine.config) must have the jitDebugging value set in the system.windows.forms section. The application must also be compiled with debugging enabled. For example: <configuration> <system.windows.forms jitDebugging="true" /> </configuration> When JIT debugging is enabled, any unhandled exception will be sent to the JIT debugger registered on the machine rather than being handled by this dialog. プログラムが動作しなかったマシンのスペックですが、 OS : Windows XP Professional SP2 .NET Framework 2.0, 1.1(英語版)です。 |
|
投稿日時: 2007-11-01 18:06
スタックトレースからの推測ですが、その XML ファイルとやらに DTD の外部サブセットが定義されてるんでしょうかね。
それなら、
|
|
投稿日時: 2007-11-05 16:48
>Hongliang さま
お返事ありがとうございます。 そして、遅くなりまして申し訳ありません。 試しに、DTD表記を消した同様のXMLファイルを用意し、 DataSetに読み込ませてみたところ、現象は起きなくなりました。 原因はDTDの外部サブセットの定義がXMLにされているということでした。 どうもありがとうございました。 |
1