1

datacontractserialization 中に名前空間がまだルートに追加されている理由を知っている人はいますか?

XML :

<Response xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
  <Event>
    <Address>
      .
      .
      .
</Response>

コード:

[DataContract(Name = "Response", Namespace = "")]
public class ApiEventResponse
{
    [DataMember(EmitDefaultValue = false)]
    public ApiEvent Event { get; set; }
}

var serializer = new DataContractSerializer(type, "Response", "");

return Task.Factory.StartNew(() =>
  {
      using (var xmlw = new XmlTextWriter(writeStream, Encoding))
      {
          xmlw.Formatting = Formatting.Indented;
          serializer.WriteObject(xmlw, value);
      }
  });
4

1 に答える 1

2

XMLSchema インスタンスの名前空間は、使用されているデータ コントラクトまたは実際の名前空間に関係なく、発行されているように見えます。XMLSchema-instance 名前空間プレフィックスは、例では実際には使用されていません。宣言されているだけです。

シリアライザーは、データのシリアライズ中に XMLSchema を参照する必要がある状況を後で発見した場合に備えて、おそらく常にその名前空間を発行しています。

于 2012-09-28T22:36:51.330 に答える