C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 43 を表示中)
■22856 / )  Re[8]: クラス名を変更するとDeserialize()でエラーが発生
□投稿者/ セラナ太郎 (7回)-(2008/08/04(Mon) 17:19:05)
シャノンさん ご返信ありがとうございます。

>Visual Studio 8 ってのは Visual Studio 2005 のことですよ。
>実は 2005 を使ってませんか?
Visual Studio 2005を使っていました。
シャノンさん、Jitta さん、いい加減なことを言ってしまい、お手数をおかけしまして大変すみませんでした。


「別クラスから同一名要素を読み込む」
これは...

・XML1-----------
<aaa>
<name></name>
<number></number>
</aaa>
-----------------
・XML2-----------
<aaa>
<title></title>
<role></role>
<date></date>
</aaa>
-----------------
このようなルート要素名が同じXMLが二つあるとき、XSL.exeはそれぞれに...
class aaa
を生成します。ただ、そのままですと、IDEでコンパイルが通らないため、以下のように名前を変更し、XMLRootで要素をクラスに割り当てます。
[XmlRoot(Namespace = "", ElementName = "aaa"]
class aaa002{}
class aaa{}
ただ、このようにすると、前に記述したような「'/' アプリケーションでサーバー エラーが発生しました。」が発生してしまいます。
現在これが問題となっています。
目的は、上記のような2つのXMLをそれぞれ Deserialize() できるようにすることです。



>XmlSerializer のインスタンスはどうやって作っていますか?
リクエスト送受信後、XmlSerializerの生成、Deserialize()する関数は以下のようになります。

XMLBase123 objXML = new aaa();

protected XMLBase123 sendRequestCore(string strURL, string strParam, string strEncoding, string strOption)
{
if (0 == strURL.Length) return null;
if (0 == strEncoding.Length) strEncoding = STR_ENC_UTF8;

string strMessageREST = strURL + STR_Q + strParam;

while (strMessageREST.Contains(STR_QQ)) strMessageREST = strMessageREST.Replace(STR_QQ, STR_Q); ;

Encoding enc = Encoding.GetEncoding(strEncoding);
WebRequest reqWeb = WebRequest.Create(strMessageREST); // リクエストの作成

_respsWeb = reqWeb.GetResponse(); // 送信とレスポンスの取得
_strmHttp = _respsWeb.GetResponseStream();

XmlReader readerXML = XmlReader.Create(_strmHttp);

XmlSerializer serializerXML = new XmlSerializer(objXML.GetType());

objXML = (XMLBase123)serializerXML.Deserialize(readerXML); //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
readerXML.Close();
_strmHttp.Close();

return (XMLBase123)objXML;

}

何か改善点などございましたら、アドバイスいただければ幸いです。
よろしくお願い致します。


返信 編集キー/


管理者用

- Child Tree -