0

私は2つのクラスを持っています:

 public class products
{
    public string category;
    public string name;
    public double price;
    public string desc;
    public string version;
    public string logoURL;
    public string imgURL;
    public string prod;

    public string Category
    {
        set { categorie = value; }
        get { return category; }
    }

と:

    [Serializable()]
public  class groupProducts
{
    public products[] produse;
}

groupProductsクラスをXmlSerializeし、サーバーからTCP接続を介してクライアントにデータを送信したいと思います。私は次のようなことを試しました:

   groupProducts gp = new groupProducts();
XmlSerializer xmlSel = new XmlSerializer(typeof(groupProducts));
TextWriter txtStream = new StreamWriter("xmlStreamFile.xml");    
xmlSel.Serialize(txtStream, gp); 
txtStream.Close();
try
{
Stream inputStream = File.OpenRead("xmlStreamFile.xml");
// declaring the size of the byte array to the length of the xmlfile
msg = new byte[inputStream.Length];
//storing the xml file in the byte array
inputStream.Read(msg, 0, (int)inputStream.Length);
//reading the byte array 
communicator[i].Send(msg);
}

しかし、クライアント側で逆シリアル化すると、XMLファイルに奇妙なデータが含まれます。

あなたはそれが何であるかについて何か考えがありますか?私は何が間違っているのですか?

4

1 に答える 1

0

1-安全のために、開くときにエンコーディングを使用しますStreamWriter

2- In inputStream.Read(msg, 0, (int)inputStream.Length);Read はinputStream.Length、ストリームからバイトを取得することを保証しません。戻り値を確認する必要があります。

3-一時ファイルは必要ありません。使用するMemoryStream

XmlSerializer xmlSel = new XmlSerializer(typeof(groupProducts));
MemoryStream m = new MemoryStream();
xmlSel.Serialize(m);
communicator[i].Send(m.ToArray());
于 2012-04-07T19:30:31.887 に答える