我的XML序列化程序有一个奇怪的行为。
读取XML并将其反序列化为对象后,所有属性都设置为默认值,而不是xml文件中声明的值。
序列化程序不会引发异常并正常运行。 xml文件格式正确,适合类结构。
任何人的想法如何,或我如何能找到问题的根源?
谢谢XML反序列化:对象具有默认值
编辑: 我没有告诉你整个故事。事情是,我得到的XML是来自另一个组件。我能够反序列化XML文件,现在我得到了不同的格式。由于该文件有大约3000行,我无法发布整个代码。但这里的区别:
deserializable:
<?xml version="1.0" encoding="utf-8"?>
<rootElem xmlns:cfg="namespace1" xmlns:office="namespace2" xmlns="namespace3">
<Prop1 xmlns="">6</Prop1>
<Prop2 xmlns="">string</Prop2>
</rootElem>
不deserializable
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<rootElem xmlns:cfg="namespace1" xmlns:office="namespace2" xmlns="namespace3">
<Prop1>6</Prop1>
<Prop2>string</Prop2>
</rootElem>
我真的不明白,为什么我可以解编第一个例子,由于XMLNS标签内每个元素,为什么我不能解组第二个...
EDIT2:刚刚意识到这只是顶级元素有这些奇怪的xmlns = “” 属性。但是C#类声明与其他所有类没有什么不同......这很奇怪。
的C#类是这样的:
using namespace1;
namespace namespace3
{
[System.SerializableAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(Namespace="namespace3")]
[System.Xml.Serialization.XmlRootAttribute(Namespace="namespace3", IsNullable=true)]
public partial class rootElem: BaseObject
{
[System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
public int Prop1
{
//...
}
}
}
您需要提供更多的信息,最好是相关代码段与你正在反序列化。 – ipavlic 2012-07-26 07:08:36
@ipavlic更新了问题并添加了一个示例 – derape 2012-07-26 07:28:06