如何在.NET中解压缩此XML?

时间:2011-03-16 20:47:23

标签: .net xml asp.net-mvc-3 xml-serialization compression

我有一个.NET MVC应用程序,它通过使用DataContractSerializer和XMLDictionaryWriter序列化视图模型来返回XML。响应是下面的XML。

在此示例中,请注意同一“Note”对象有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 个答案:

答案 0 :(得分:2)

这是DataContractSerializer在全图模式下工作。它不是压缩 - 这就是用于保存对象引用的格式。反序列化时打开全图模式,它应该工作。这是DataContractSerializer的构造函数参数。