この C# XML デシリアライゼーション コードの何が問題になっていますか?

コーチ_ロブ

見つけられる限り多くの記事を読み、以前にこの方法でシリアル化を行ったことがありますが、私の人生では、以下が正しく機能しない理由を理解できません。

支援を歓迎します。

このコードを考えると:

脱シリアル化応答の POCO クラス:

[XmlRoot]
public class MyResponseClass
{
    [XmlElement("response")]
    public Response Response { get; set; }
}

[XmlRoot]
public class Response
{
    [XmlElement("error")]
    public Error Error { get; set; }

    [XmlElement("sid")]
    public string Sid { get; set; }
}

[XmlRoot]
public class Error
{
    [XmlElement("error_msg")]
    public string ErrorMessage { get; set; }
}

リクエストとレスポンスの処理コード:

var webClient = _webClientWrapperFactory.Create();
var url = "https://serviceendpoint.com";
var responseString = webClient.DownloadString(url);

MyResponseClass result;
var serializer = new XmlSerializer(typeof(MyResponseClass));
using (var reader = new StringReader(responseString))
{
result = (MyResponseClass) serializer.Deserialize(reader);
}
return result;

この応答を返します:

<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><response><error><error_msg>CANNOT_LOGIN</error_msg></error></response>

デシリアライズを試みると、次のエラーがスローされます。

System.Xml.dll で「System.InvalidOperationException」タイプの例外が発生しましたが、ユーザー コードでは処理されませんでした

追加情報: XML ドキュメント (1、57) にエラーがあります。

編集: 内部例外:

{"<response xmlns=''> was not expected."}
15ee8f99-57ff-4f92-890c-b56153

のクイック インスタンスを作成してMyResponseClassシリアル化しました。

<?xml version="1.0" encoding="utf-16"?>
<MyResponseClass xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <response>
    <error>
      <error_msg>error message text</error_msg>
    </error>
    <sid>(sid string)</sid>
  </response>
</MyResponseClass>

これが、あなたの XML がどのように見えるかですMyResponseClass私が使用したシリアル化コードは次のとおりです。

MyResponseClass result1 = new MyResponseClass
{
    Response = new Response
    {
        Sid = "(sid string)",
        Error = new Error
        {
            ErrorMessage = "error message text"
        }
    }
};

var serializer = new XmlSerializer(typeof(MyResponseClass));
string serialized = "";

using (StringWriter textWriter = new StringWriter())
{
    serializer.Serialize(textWriter, result1);
    serialized = textWriter.ToString();
}

しかし、それはおそらくあなたが望むものではありません。

質問にある XML に固執したい場合は、省略して、XML ルートとしてすべて小文字であるMyResponseClassことを指定する必要がありますResponse

[XmlRoot("response")]
public class Response
{
    [XmlElement("error")]
    public Error Error { get; set; }

    [XmlElement("sid")]
    public string Sid { get; set; }
}

...

var responseString = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><response><error><error_msg>CANNOT_LOGIN</error_msg></error></response>";

var serializer2 = new XmlSerializer(typeof(Response));

//using (StringWriter textWriter = new StringWriter())
//{
//    serializer2.Serialize(textWriter, result1.Response);
//    responseString = textWriter.ToString();
//}

Response result;
using (var reader = new StringReader(responseString))
{
    result = (Response)serializer2.Deserialize(reader);
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

このC ++のコードの何が問題になっていますか?

分類Dev

このCコードの何が問題になっていますか?

分類Dev

このコードの何が問題になっていますか?Objective C

分類Dev

C ++コード:これの何が問題になっていますか?

分類Dev

この C コードの何が問題になっていますか? 子供が帰ってこない?

分類Dev

cの私のコードの何が問題になっていますか

分類Dev

私のC#コードの何が問題になっていますか

分類Dev

私のCコードの何が問題になっていますか?

分類Dev

C ++のコードの何が問題になっていますか?

分類Dev

私のコードの何が問題になっていますか? c ++

分類Dev

このcコード(リンクリストの実装)の何が問題になっていますか?

分類Dev

このC ++コードの何が問題になっていますか?(コンソール)

分類Dev

C#コードの何が問題になっていますか?

分類Dev

このc ++リンクリストコードの何が問題になっていますか?

分類Dev

C ++でのこのファイル処理コードの何が問題になっていますか?

分類Dev

C ++でのこのファイル処理コードの何が問題になっていますか?

分類Dev

この単純なコード(Objective c)の何が問題になっていますか?

分類Dev

HCFを見つけるためのこのCコードの何が問題になっていますか?

分類Dev

多項式のcコードを追加することの何が問題になっていますか?

分類Dev

破壊を使用するこのc ++コードの何が問題になっていますか?

分類Dev

このC#.NET WinFormsアプリケーションで何が問題になっていますか?

分類Dev

XMLエンティティ-私のコードの何が問題になっていますか?

分類Dev

私のC#アップデートコードの何が問題になっていますか?

分類Dev

cは初めてですが、コードの何が問題になっていますか

分類Dev

次のcコードの何が問題になっていますか?MISRA品質警告メッセージ

分類Dev

C ++マージソートコードの何が問題になっていますか?

分類Dev

Java:バイナリではなくXMLとのシリアライゼーション/デシリアライゼーション

分類Dev

C ++コードが入力を受け取らないのはなぜですか?私のコードの何が問題になっていますか?

分類Dev

cのリンクリストコードを使用したこの挿入ソートの何が問題になっていますか?

Related 関連記事

  1. 1

    このC ++のコードの何が問題になっていますか?

  2. 2

    このCコードの何が問題になっていますか?

  3. 3

    このコードの何が問題になっていますか?Objective C

  4. 4

    C ++コード:これの何が問題になっていますか?

  5. 5

    この C コードの何が問題になっていますか? 子供が帰ってこない?

  6. 6

    cの私のコードの何が問題になっていますか

  7. 7

    私のC#コードの何が問題になっていますか

  8. 8

    私のCコードの何が問題になっていますか?

  9. 9

    C ++のコードの何が問題になっていますか?

  10. 10

    私のコードの何が問題になっていますか? c ++

  11. 11

    このcコード(リンクリストの実装)の何が問題になっていますか?

  12. 12

    このC ++コードの何が問題になっていますか?(コンソール)

  13. 13

    C#コードの何が問題になっていますか?

  14. 14

    このc ++リンクリストコードの何が問題になっていますか?

  15. 15

    C ++でのこのファイル処理コードの何が問題になっていますか?

  16. 16

    C ++でのこのファイル処理コードの何が問題になっていますか?

  17. 17

    この単純なコード(Objective c)の何が問題になっていますか?

  18. 18

    HCFを見つけるためのこのCコードの何が問題になっていますか?

  19. 19

    多項式のcコードを追加することの何が問題になっていますか?

  20. 20

    破壊を使用するこのc ++コードの何が問題になっていますか?

  21. 21

    このC#.NET WinFormsアプリケーションで何が問題になっていますか?

  22. 22

    XMLエンティティ-私のコードの何が問題になっていますか?

  23. 23

    私のC#アップデートコードの何が問題になっていますか?

  24. 24

    cは初めてですが、コードの何が問題になっていますか

  25. 25

    次のcコードの何が問題になっていますか?MISRA品質警告メッセージ

  26. 26

    C ++マージソートコードの何が問題になっていますか?

  27. 27

    Java:バイナリではなくXMLとのシリアライゼーション/デシリアライゼーション

  28. 28

    C ++コードが入力を受け取らないのはなぜですか?私のコードの何が問題になっていますか?

  29. 29

    cのリンクリストコードを使用したこの挿入ソートの何が問題になっていますか?

ホットタグ

アーカイブ