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

わんくま同盟

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

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


(過去ログ 43 を表示中)
■22845 / )  Re[6]: クラス名を変更するとDeserialize()でエラーが発生
□投稿者/ セラナ太郎 (6回)-(2008/08/04(Mon) 12:26:34)
シャノンさん、Jittaさん、ご教授ありがとうございます。

XMLRoot属性を以下のように使用してクラスPriceInfo123にXML要素PriceInfoを読み込ませることができました。
[XmlRoot(Namespace = "", ElementName = "PriceInfo", IsNullable = true)]
public partial class PriceInfo123 : XMLBase123
{
}


ただ、以下のように別クラスから同一ROOT XML要素を読もうとするとエラーになってしまいました。
[XmlRoot(Namespace = "", ElementName = "PriceInfo", IsNullable = true)]
public partial class PriceInfo123 : XMLBase123
{
}
[XmlRoot(Namespace = "", ElementName = "PriceInfo", IsNullable = true)]
public partial class PriceInfo456 : XMLBase123
{
}
--------------------------------------------------------------------------------
'/' アプリケーションでサーバー エラーが発生しました。
--------------------------------------------------------------------------------
名前空間 '' の最上位の XML 要素 'ekidata' が、明示型である ns01.PriceInfo123 および ns01.PriceInfo456 を参照しています。XML 属性を使用して、この要素または型の代わりとなる別の XML 名または名前空間を指定してください。
説明: 現在の Web 要求を実行中に、ハンドルされていない例外が発生しました。エラーに関する詳細および例外の発生場所については、スタック トレースを参照してください。

例外の詳細: System.InvalidOperationException: 名前空間 '' の最上位の XML 要素 'ekidata' が、明示型である ns01.PriceInfo123 および ns01.PriceInfo456 を参照しています。XML 属性を使用して、この要素または型の代わりとなる別の XML 名または名前空間を指定してください。
--------------------------------------------------------------------------------


別クラスから同一名要素を読み込むのは無理なのでしょうか?
それとも、私のXMLスキーマクラス(PriceInfo)の作り方に問題があるのでしょうか?
ひとつのWebServiceを実行してその戻り値のXMLをそのままXSD.exeにかけてC#のクラスを作っています。

別Webサービスの戻り値のROOT XML要素名がバッティングすると、クラス名がバッティングするので、名前空間を変更もしくは、XmlRoot属性を使用してクラス名とXML要素のマッピングをしても、別クラスで同一ROOT XML要素を参照すると上記エラーが発生してしまいます。
スキーマクラスをマージすることで解決できるか少しやって見ます。


XSD.exeは
C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin
のものを使用しています。(C:\Program Files下にあるのはこちらのexeのみでした。)
バージョンなどがあっていないなどの問題もございますでしょうか?


問題点などアドバイスなどいただけましたら幸いです。
返信 編集キー/


管理者用

- Child Tree -