1

有谁知道为什么在数据合同序列化期间仍将命名空间添加到根目录?

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-instance 命名空间。XMLSchema-instance 命名空间前缀实际上并未在您的示例中使用,它只是被声明了。

序列化程序可能只是始终发出该名称空间,以防它以后发现需要在序列化数据时引用 XMLSchema 的情况。

于 2012-09-28T22:36:51.330 回答