Как мне распаковать этот XML в .NET? - PullRequest
0 голосов
/ 16 марта 2011

У меня есть приложение .NET MVC, которое возвращает XML путем сериализации модели представления с использованием DataContractSerializer и XMLDictionaryWriter.Ответом является приведенный ниже XML.

В этом примере обратите внимание, что существует 2 копии одного и того же объекта «Примечание».Когда появляется заметка в первый раз, она идеальна.Во второй раз все строки имеют атрибут «i: nil» и ссылку на предыдущий узел, где появилась та же строка.

Вопросы:

  • Я предполагаю, что этокакое-то сжатие.Где это происходит?В IIS?
  • Как мне распаковать это в .NET?

Спасибо за вашу помощь!

Том

<Note z:Id="2">
<DateCreated>2011-03-16T11:22:30.2226663-07:00</DateCreated>
<DateModified>2011-03-16T11:22:30.2226663-07:00</DateModified>
<Deleted>false</Deleted>
<PinnedToList>true</PinnedToList>
<PinnedToTile>false</PinnedToTile>
<Revision>1</Revision>
<TagText z:Id="3">#todo #work</TagText>
−
<Tags z:Id="4" z:Size="2">
−
<Tag z:Id="5">
<TagName z:Id="6">todo</TagName>
<UserId>3</UserId>
</Tag>
−
<Tag z:Id="7">
<TagName z:Id="8">work</TagName>
<UserId>3</UserId>
</Tag>
</Tags>
<Text z:Id="9">This is a sample note.</Text>
<User i:nil="true"/>
<UserId>0</UserId>
</Note>
−
<Note z:Id="10">
<DateCreated>2011-03-16T11:22:30.2226663-07:00</DateCreated>
<DateModified>2011-03-16T11:22:30.2226663-07:00</DateModified>
<Deleted>false</Deleted>
<PinnedToList>true</PinnedToList>
<PinnedToTile>false</PinnedToTile>
<Revision>1</Revision>
<TagText z:Ref="3" i:nil="true"/>
−
<Tags z:Id="11" z:Size="2">
−
<Tag z:Id="12">
<TagName z:Ref="6" i:nil="true"/>
<UserId>3</UserId>
</Tag>
−
<Tag z:Id="13">
<TagName z:Ref="8" i:nil="true"/>
<UserId>3</UserId>
</Tag>
</Tags>
<Text z:Ref="9" i:nil="true"/>
<User i:nil="true"/>
<UserId>0</UserId>
</Note>

1 Ответ

2 голосов
/ 17 марта 2011

То есть DataContractSerializer, работающий в режиме полного графика.Это не сжатый - это просто формат, используемый для сохранения ссылок на объекты.Включите режим полного графика при десериализации, и он должен работать.Это аргумент конструктора для DataContractSerializer.

...