| ■23980 / ) |
MemoryStreamとXmlWriter |
□投稿者/ kobachi (1回)-(2008/08/26(Tue) 02:54:09)
|
分類:[C#]
はじめまして。C#でしがないプログラムを開発しているkobachiと申します。
ちょっとした問題にぶつかりましたので、新参者ですが質問をさせてください。
C#のバージョンは、2.0です。
----------
■状況説明
----------
現在、C#で記述されたクラスをXmlSerializerによって変換し、
TCPで転送するプログラムを作成しております。
たとえば、
▼----------【クラスここから】----------▼
public class Data{
public string Test = "This is test.";
}
▲----------【クラスここまで】----------▲
というようなクラスがあったとします。
これをTCPで送信することが目的なので、次のようなコードで直接byte[]に変換します。
▼----------【コードここから】----------▼
Data data = new Data();
byte[] result = new byte[0];
using(MemoryStream stream = new MemoryStream()){
using(XmlWriter writer = XmlWriter.Create(stream)){
XmlSerializer serializer = new XmlSerializer(typeof(Data));
serializer.Serialize(writer, data);
}
result = stream.ToArray();
}
▲----------【コードここまで】----------▲
すると、先頭に余計な「?」が入ったXMLが出力されます。
これは整形式のXMLではないと思いますが、Deserialize()はエラーもなくちゃんと通ります。
▼----------【出力結果ここから】----------▼
?<?xml version="1.0" encoding="utf-8"?><Data xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><Test>This is test.</Test></Data>
▲----------【出力結果ここまで】----------▲
XmlWriter.Create()にStringBuilderを渡した場合には、先頭に余計な「?」が入ることはありません。
XmlWriterSettingsを指定してみたりしましたが、特に変化はありません。
----------
■質問
----------
XmlWriter.Create()にMemoryStreamを渡してXmlSerializerによるSerializeを行ったとき、
先頭に「?」が挿入されたXMLが返ってくるのはバグでしょうか、それとも正常な動作なのでしょうか?
何か情報をご存じの方がいらっしゃいましたら、教えていただけないでしょうか。
|
|