C# Xml反序列化-在Xml数据中的未知节点之后,所有字段都保持为空
我想使用XmlSerializer将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
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; }
}