如何在没有保证架构的情况下使用.NET XML序列化

时间:2009-10-23 17:00:15

标签: c# xml-serialization

基本上,我有一些我需要反序列化的xml。在我编写代码时,我将了解XML的结构,但我希望能够对xml进行简单的更改,而无需更新序列化代码。

示例:

<foo>
  <bar/>
</foo>

我希望能够反序列化foo,即使我添加了一个未在attibuted可序列化类中定义的额外节点。

<foo>
  <bar/>
  <extra-tag/>
</foo>

1 个答案:

答案 0 :(得分:1)

如果我理解你的问题,这应该可以正常工作。

给出一个课程:

[XmlRoot("foo")]
public class Foo
{
    [XmlElement("bar")]
    public string Bar;
    [XmlElement("extra-tag")]
    public string ExtraTag;
}

然后这段代码工作正常:

string xml = 
@"<foo>
  <bar>bar</bar>
  <extra-tag>extra-tag</extra-tag>
</foo>";


XmlSerializer serializer = new XmlSerializer(typeof(Foo));
Foo afoo = (Foo)serializer.Deserialize(new StringReader(xml));

但如果你的班级看起来像这样:

[XmlRoot("foo")]
public class Foo
{
    [XmlElement("bar")]
    public string Bar;
}

代码继续工作