【问题标题】:How do I decompress this XML in .NET?如何在 .NET 中解压缩此 XML?
【发布时间】:2011-03-16 20:47:23
【问题描述】:

我有一个 .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>

【问题讨论】:

  • 你试过反序列化它吗?实际的错误是什么?

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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-19
    • 2012-03-17
    相关资源
    最近更新 更多