我有一些 XML,我想将其序列化为一个类。
<MasterData>
<Data>
<SomeInnerData>
some inner data
</SomeInnerData>
</Data>
</MasterData>
<MoreData>
<SubMoreData>moredate</SubMoreData>
</MoreDate>
和
[System.SerializableAttribute()]
public class MasterData
{
public string SomeInnnerData {get;set;}
public string SubMoreDate {get;set;}
}
如何设置字符串成员变量以序列化 XML 中的适当数据?我的问题是该元素不是 MasterData 元素的子元素。
最佳答案
最简单的方法是逆向工作,让您的类设置序列化为您想要的格式,这样您就可以轻松反序列化为它。
注意:您的 xml 未通过验证,因此我将其更改为示例
<MasterData>
<Data>
<SomeInnerData>some inner data</SomeInnerData>
</Data>
<MoreData>
<SubMoreData>moredate</SubMoreData>
</MoreDate>
</MasterData>
目前,您的问题是您有 Data
和 MoreData
元素未映射到任何内容
你需要像这样创建类
public class MasterData {
public Data Data {get; set;}
public MoreData Data {get; set;}
}
public class Data {
public string SomeInnerData {get; set;}
}
public class MoreData {
public string SubMoreData {get; set;}
}
您可以将属性命名为其他名称,并使用 [XmlElement(ElementName="SubMoreData")]
将属性映射到正确的元素。
或者,您可以实现 IXmlSerializable
接口(interface),并在单个类中编写自定义序列化代码,以根据需要将您的类映射到 xml
关于属性的 C# XML 序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3637535/