【问题标题】:DataContractSerializer only partially serializing my objectsDataContractSerializer 仅部分序列化我的对象
【发布时间】:2009-09-01 07:12:33
【问题描述】:

我正在使用以下代码将对象序列化为 XML,

        StringBuilder sb = new StringBuilder();
        DataContractSerializer dcr = new DataContractSerializer(query.Result.GetType());
        XmlWriterSettings xws = new XmlWriterSettings()
        {
            CloseOutput = true,
            Encoding = Encoding.UTF8
        };
        dcr.WriteObject(XmlWriter.Create(sb, xws), query.Result);
        query.Result.ReportXml = sb.ToString();

但我无法让 DataContractSerializer 返回完整且有效的 XML,对于我尝试序列化的每个对象,我都会返回 6143 个字符。

这里是返回的 XML 字符串结尾的示例,

<d2p1:anyType i:type="EquipmentDO">
  <DataObjectState>Modified</DataObjectState>
  <DataObjectType>Equipment</DataObjectType>
  <OwningDataManagerType>Configuration</OwningDataManagerType>
  <ConfigurationManagementID i:nil="true" />
  <ConfigurationManagerAction>Nothing</ConfigurationManagerAction>
  <ConfigurationRequestUserID i:nil="true" />
  <Id>10</Id>
  <Active>false</Active>
  <EquipmentModel>11</EquipmentModel>
  <LineClearanceLevelIds>
    <_keys>
      <d2p1:int>1</d2p1:int>
      <d2p1:int>2</d2p1:int>
      <d2p1:int>3</d2p1:int>
      <d2p1:int>4</d2p1:int>
    </_keys>
  </LineClearanceLevelIds>
  <Zone>5</Zone>
</d2p1:anyType>
<d2p1:anyType="" i:type="EquipmentDO">
  <DataObjectState>Modified</DataObjectState>
  <D

有没有其他人经历过将生成的 XML 限制为多个字符,或者任何人都可以指出我在这里做错了什么?

谢谢

【问题讨论】:

    标签: c# wcf serialization


    【解决方案1】:

    我想它被缓冲在XmlWriter;试试:

    using(XmlWriter xw = XmlWriter.Create(sb, xws)) {
        dcr.WriteObject(xw, query.Result);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-23
      • 1970-01-01
      • 1970-01-01
      • 2010-12-23
      • 1970-01-01
      相关资源
      最近更新 更多