我的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