none
string文字列からXmlSerializer.Deserializeを直接実行する方法について RRS feed

  • 質問

  •  XMLデータをクラスのプロパティに反映させるXmlSerializerをStreamクラスからではなく、XML定義が直接格納されたstringから作成する方法を探しております。

     

    Code Snippet

     

    string xmltext = "...";
    // xmltextにはXmlSerializer.Serializeで生成されたXML文章が格納されているものとする
    XmlSerializer xs = new XmlSerializer(typeof(FooClass));
    StringReader reader = new StringReader(xmltext);
    FooClass fooclass = xs.Deserialize(reader) as FooClass;

     

     

     以上のような感じでコードを書いてみたものの、Deserializeの箇所でInvalidOperationExceptionが発生してしまいます。エラー内容(XML ドキュメント (1,3) でエラーが発生しました)から察するに、XML宣言の「<?XML VERSION="1.0"?>」が正しくないと判断されてしまうようです。

     

     FileStreamからの参照であればXML宣言が含まれていても変換に成功するようなのですが、stringから直接変換するよい方法はないものでしょうか。

    2008年11月6日 9:42

回答

  •  Tank2005 さんからの引用

    エラー内容(XML ドキュメント (1,3) でエラーが発生しました)から察するに、XML宣言の「<?XML VERSION="1.0"?>」が正しくないと判断されてしまうようです。


    XML は大文字小文字を区別し、xml 宣言や version 宣言は小文字で表記します。
    ですので本当にこの通りならエラーで当然ですが。
    2008年11月6日 10:51

すべての返信

  •  Tank2005 さんからの引用

    エラー内容(XML ドキュメント (1,3) でエラーが発生しました)から察するに、XML宣言の「<?XML VERSION="1.0"?>」が正しくないと判断されてしまうようです。


    XML は大文字小文字を区別し、xml 宣言や version 宣言は小文字で表記します。
    ですので本当にこの通りならエラーで当然ですが。
    2008年11月6日 10:51
  • 単純なミスでxml文を大文字にしてしまったようです。お恥ずかしい

    2008年11月6日 12:21