DataContractSerializer только частично сериализует мои объекты - PullRequest
1 голос
/ 01 сентября 2009

Я использую следующий код для сериализации объекта в 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 Ответ

2 голосов
/ 01 сентября 2009

Я предполагаю, что оно буферизовано в XmlWriter; попробуйте:

using(XmlWriter xw = XmlWriter.Create(sb, xws)) {
    dcr.WriteObject(xw, query.Result);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...