- PR -

C#でXMLパーサーをつかう

投稿者投稿内容
cane
常連さん
会議室デビュー日: 2004/10/06
投稿数: 37
投稿日時: 2004-11-08 08:54
お世話になります。
C#でXMLパーサーを使い各データを取得し、DBに格納する処理をしたいのですが、
XmlTextReader、XmlReaderを使ってもエラーが発生します。
状態としては、リクエストを送りレスポンスがXMLで帰ってくる形になります。
なにか、有効なメソッドを教えて頂ければと思います。
宜しくお願い致します。
エラー内容:System.ArgumentException: パスに無効な文字が含まれています。

XML内容:<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ResultCount>0</ResultCount>
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2004-11-08 10:37
引用:

XmlTextReader、XmlReaderを使ってもエラーが発生します。



どこかで使い方を間違えてるんでしょうね。

引用:

状態としては、リクエストを送りレスポンスがXMLで帰ってくる形になります。
なにか、有効なメソッドを教えて頂ければと思います。



メソッド云々の前にデバッグの技術を身につけましょう。

引用:

エラー内容:System.ArgumentException: パスに無効な文字が含まれています。



とのことですから、XmlTextReader なり XmlReader なりに渡す、xml ファイルのパス名が不正ということです。

_________________
// 渋木宏明 (Hiroaki SHIBUKI)
// http://hidori.jp/
// Microsoft MVP for Visual C#
//
// @IT会議室 RSS 配信中: http://hidori.jp/rss/atmarkIT/
cane
常連さん
会議室デビュー日: 2004/10/06
投稿数: 37
投稿日時: 2004-11-08 12:37
お世話になっております。

>XmlTextReader なり XmlReader なりに渡す、xml ファイルのパス名が不正ということです
というご指摘を頂きましたが、現状ではレスポンスで帰ってきたxmlを変数に格納し、その変数をメソッドの引数に渡す処理をしています。ファイルに保存し、そのファイルのパスを指定したときには簡単に読み込みました。
burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2004-11-08 13:09
現状、XmlTextReaderのコンストラクタにXMLのデータがはいったStringを渡してエラーが出ているってことですか?
ようするにXMLのデータが格納されているStringからXmlTextReaderを生成したいってこと??
きくちゃん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 854
お住まい・勤務地: 都内某所
投稿日時: 2004-11-08 13:24
caneさん、こんにちは。

引用:

というご指摘を頂きましたが、現状ではレスポンスで帰ってきたxmlを変数に格納し、その変数をメソッドの引数に渡す処理をしています。ファイルに保存し、そのファイルの


XMLを格納する変数の型は何ですか?
仮に String だとして、XmlTextReader に、そんなメソッドありましたっけ?
cane
常連さん
会議室デビュー日: 2004/10/06
投稿数: 37
投稿日時: 2004-11-08 13:47
お世話になっております。
ただ単に引数の渡し方が間違えていただけでした。
ソースとしては途中からですが
// 結果を受け取る。
WebResponse webRes = webReq.GetResponse();

// HttpWebRequest からストリームを取得する。
stream = webRes.GetResponseStream();

// SHIFT JIS で読み取る。
sr = new StreamReader(stream, Encoding.GetEncoding("SHIFT-JIS"));
str = sr.ReadToEnd();
//不要な文字列を削除
res = str.Remove(1,1);
par = res.Remove(0,1);
//xmlを読み込む

XmlTextReader reader = new XmlTextReader("str");
↑ここで修正前は
XmlTextReader reader = new XmlTextReader(str);
だった為”パスに無効な文字が含まれています。”
というエラーログが吐き出されていたようです。修正後読み込みました。
お手数をおかけしました
Jubei
ぬし
会議室デビュー日: 2002/03/02
投稿数: 830
お住まい・勤務地: 関西
投稿日時: 2004-11-08 14:35
諸農です。

引用:

// SHIFT JIS で読み取る。
sr = new StreamReader(stream, Encoding.GetEncoding("SHIFT-JIS"));



元のXMLはUTF-8の指定がされていますが、それは大丈夫なのでしょうか?

_________________
諸農和岳
Powered by Turbo Delphi & Microsoft Visual Studio 2005

十兵衛@わんくま同盟
http://blogs.wankuma.com/jubei/
cane
常連さん
会議室デビュー日: 2004/10/06
投稿数: 37
投稿日時: 2004-11-08 14:42
引用:
--------------------------------------------------------------------------------
元のXMLはUTF-8の指定がされていますが、それは大丈夫なのでしょうか?
--------------------------------------------------------------------------------
shift_jisではなくUTF-8に切り替えたのですが、
”追加情報 : パスに無効な文字が含まれています”になります。
原因は何でしょうか?
ご教授お願い致します。

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