Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.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# Xml反序列化-在Xml数据中的未知节点之后,所有字段都保持为空_C#_Xml_.net 2.0_Xml Deserialization - Fatal编程技术网

C# Xml反序列化-在Xml数据中的未知节点之后,所有字段都保持为空

C# Xml反序列化-在Xml数据中的未知节点之后,所有字段都保持为空,c#,xml,.net-2.0,xml-deserialization,C#,Xml,.net 2.0,Xml Deserialization,我想使用XmlSerializer将xml字符串反序列化为对象。 xml字符串包含额外的未知节点,这些节点不在我要反序列化到的对象类中。 反序列化后,将填充未知节点之前的字段(“ast”),但其之后的所有字段(“pfosten”不在对象类中)保持为空 xml字符串: <Baum> <ast>1</ast> <pfosten>2</pfosten> <wurzel>3</wurzel> &l

我想使用XmlSerializer将xml字符串反序列化为对象。
xml字符串包含额外的未知节点,这些节点不在我要反序列化到的对象类中。 反序列化后,将填充未知节点之前的字段(“ast”),但其之后的所有字段(“pfosten”不在对象类中)保持为空

xml字符串:

<Baum>
   <ast>1</ast>
   <pfosten>2</pfosten>
   <wurzel>3</wurzel>
   <blatt>4</blatt>
</Baum>
我的代码如下所示:

private object DeserializeString(Type t, string s)
{
    object obj;
    XmlSerializer serializer = new XmlSerializer(t);
    serializer.UnknownNode += new XmlNodeEventHandler(serializer_UnknownNode);

    using (var reader = new StringReader(s))
    {
        obj = serializer.Deserialize(reader);
    }
    return (obj);
}
private void serializer_UnknownNode(object sender, XmlNodeEventArgs e)
{
    Debug.WriteLine("UnknownNode Name: {0}", e.Name);
}
在调试过程中,我可以看到,序列化程序_UnknownNode()方法在“pfosten”上被调用,并且在下面的每个节点上也被调用

我用.NET2.0编程

希望我提供了所有的信息,有人可以帮助我

非常感谢,蒙克

评估顺序是否相关

如果没有,请从所有属性的
xmlementAttribute
中删除
Order
参数,它将反序列化为fine,即:

[System.Xml.Serialization.XmlElementAttribute(DataType = "NCName")]
public string blatt
{

    get { return _blatt; }

    set { _blatt = value; }

}

确切地如果存在未知节点,它将以下所有元素移动一个位置,XmlSerializer将不再识别它们,因为它们不在预期位置+非常感谢!属性是由xsd2code插件设置的,我从来没有想过!完全有道理。(我想投你一票,但我不能)
[System.Xml.Serialization.XmlElementAttribute(DataType = "NCName")]
public string blatt
{

    get { return _blatt; }

    set { _blatt = value; }

}