Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在没有保证模式的情况下使用.NET XML序列化_C#_Xml Serialization - Fatal编程技术网

C# 如何在没有保证模式的情况下使用.NET XML序列化

C# 如何在没有保证模式的情况下使用.NET XML序列化,c#,xml-serialization,C#,Xml Serialization,基本上,我需要反序列化一些xml。在编写代码时,我将了解XML的结构,但我希望能够对XML进行简单的更改,而不必更新序列化代码 例如: <foo> <bar/> </foo> 我希望能够反序列化foo,即使我添加了attibuted serializable类中未定义的额外节点 <foo> <bar/> <extra-tag/> </foo> 如果我正确理解了你的问题,这应该可以 给定一个类:

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

例如:

<foo>
  <bar/>
</foo>

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

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

如果我正确理解了你的问题,这应该可以

给定一个类:

[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;
    [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));

代码继续工作

我想这是一个错误的假设,我认为它不会工作。我想这是一个错误的假设,我认为它不会工作