2

ソケット経由で取得している XML データをいくつかの使用可能なオブジェクトにシリアライズしようとしていますが、最初は 1.0 では明示的に無効な 0x10 文字の受信に問題があり、1.1 は .NET でサポートされていないため、そのように指示されました。特定の文字列を Base64 としてエンコードする必要がありました。

これは、XML文字列のクラスで行ったことです

    [XmlRoot]
public class message
{
    [XmlElement]
    public string type { get; set; }
    [XmlElement]
    public string user { get; set; }
    [XmlElement]
    public string cmd { get; set; }
    [XmlElement]
    public string host { get; set; }
    [XmlElement]
    public byte[] msg { get; set; }

    public string GetCommand()
    {
        return System.Text.Encoding.UTF8.GetString(msg);
    }
}

私はここで読んだ:XmlSerializer、base64は、プロパティをbyte []として設定できるStringメンバーをエンコードし、Base64として自動的にエンコードするので、これが私がしたことです。次に、シリアライゼーションの問題を回避することを期待して、この Base64 を人間が読み取れる文字列として取得するメソッドを追加しました。

ただし、xml文字列をシリアル化しようとすると、適切なエラーが発生します((0x10)は問題のある文字がある場所ですが、この投稿には表示されません):

XML文字列

<?xml version=\"1.0\"?><message><type>SERVER</type><user>TestDeleteOrKillMe</user>
<cmd>PRIVATE_MSG</cmd><host>65.255.81.81</host><msg>57(0x10)(0x10)</msg></message>

エラーを受け取りました

 {"'', hexadecimal value 0x10, is an invalid character. Line 1, position 135."}

したがって、本質的にこのアプローチは私に同じ応答をもたらしました.なぜ私はその理由を理解するのに苦労しています.誰かがデモコードまたはなぜこれが起こっているのかについての情報を教えてもらえますか?

4

0 に答える 0