代码之家  ›  专栏  ›  技术社区  ›  mattdlong

DataContractSerializer仅部分序列化我的对象

  •  1
  • mattdlong  · 技术社区  · 15 年前

    我使用以下代码将对象序列化为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限制为多个字符的过程,或者有没有人能指出我在这里做了什么错误?

    谢谢

    1 回复  |  直到 15 年前
        1
  •  2
  •   Marc Gravell    15 年前

    我想它是在 XmlWriter 尝试:

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