如何将此XML反序列化为有用的数据结构?

时间:2011-09-15 00:04:05

标签: c# serialization xml-serialization

我正在使用收据格式作为“saml断言”返回给我。这是一种已知且定义良好的格式,但在我当前的平台上,我无法访问可以将xml反序列化为原始类的库。

我已经确定我可能需要滚动自己的类但是给出了xml的格式,我真的不知道C#类会是什么样子,也不知道将它反序列化所需的定义和技巧。

目标是从收据中创建一个我可以检查的C#对象列表。我想在Name节点中保留Format中的值以及id。此外,使这一挑战的部分原因是声明包含主题和属性元素。我想问清单的一个问题是,列表是否包含一个Assertion,其中一个Attribute节点的“Gamma”值为999.

这是格式:

<Assertion>
<Statement>
    <Subject>
        <Name Format="http://name.com/123/45/ProductName" Id="123">123456</Name>
    </Subject>
    <Attribute Name="Alpha">
        <Value>111</Value>
    </Attribute>
    <Attribute Name="Gamma">
        <Value>22</Value>
    </Attribute>
    ...
    <Attribute Name="Delta">
        <Value>3</Value>
    </Attribute>
</Statement>
</Assertion>

2 个答案:

答案 0 :(得分:1)

您可以使用XML Schema Definition Tool (Xsd.exe)启动课程结构。

这是Yogesh Joshi撰写的一篇优秀博客文章,介绍了整个过程:http://blogs.msdn.com/b/yojoshi/archive/2011/05/14/xml-serialization-and-deserialization-entity-classes-with-xsd-exe.aspx

答案 1 :(得分:0)

正如Kon在评论中所说,Attribute节点应该包含在容器元素中。我没有找到任何好的方法来反序列化其中还包含其他元素的列表(或属性)。您可能会被迫让您的类实现IXmlSerializable并写入比您需要的更多。