2009-09-01 15 views
1

我使用下面的代码序列化对象到XML,DataContractSerializer的只是部分序列化我的对象

 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的覆盖到数量的字符,任何人都可以指出我在做什么这里错了吗?

谢谢

回答

2

我想它是缓冲在XmlWriter;尝试:

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

是的,这样做,非常感谢马克。 – mattdlong 2009-09-01 07:35:23

相关问题