属性的 C# XML 序列化

标签 c# xml-serialization

我有一些 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> 

目前,您的问题是您有 DataMoreData 元素未映射到任何内容

你需要像这样创建类

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/

相关文章:

c# - 将不同的数字类型作为参数发送到方法时是否存在性能问题?

c# - 如何使用 asp.net 序列化反序列化具有值和属性的 xml 节点

c# - 在 .NET Framework 2 和 4 中进行序列化和反序列化 - C#

c# - .net XML 序列化 : how to specify an array's root element and child element names

c# - 将嵌套的 xml 反序列化为 C# 对象

java - 尝试通过 HTTP 为 Spring Web MVC 服务配置 XML 编码时出现 "406 Not Acceptable"

c# - VideoSourcePlayer 控件中视频源的同步声音播放

c# - 有没有办法禁用从 UInt32 到 char 的隐式转换?

c# - 在整个 Windows 窗体应用程序生命周期中只运行一次代码

c# - WCF RESTFul 服务 - 404 端点未找到 2 个服务