【问题标题】:serialize & deserialize with property as list<string> xml file using C#使用 C# 将属性序列化和反序列化为 list<string> xml 文件
【发布时间】:2013-08-19 10:00:03
【问题描述】:

如何使用 C# 对下面的 xml 文件进行序列化和反序列化。 我已经为这个 xml 创建了可序列化的类。

在反序列化此 xml 的代码下方,列表只能获取单个值。

<?xml version="1.0" encoding="utf-8" ?>
<Configuration>
<CSVFile>
<string>ff</string>
<string>gg</string>
<string>jj</string>
</CSVFile> 
</Configuration>


[Serializable, XmlRoot("Configuration"), XmlType("Configuration")]
public class Configuration
{
    public Configuration()
    {
        CSVFile = new List<string>();
    }

    [XmlElement("CSVFile")]
    public List<string> CSVFile { get; set; }
}

public class Mytutorial
{
    string configFilePath = "above xml file path"

    XmlSerializer serializer = new XmlSerializer(typeof(Configuration));
    FileStream xmlFile = new FileStream(configFilePath, FileMode.Open);
    Configuration con = (Configuration)serializer.Deserialize(xmlFile);
 }

【问题讨论】:

标签: c# xml serialization


【解决方案1】:

只需如下更改您的课程,它就会起作用

public class Configuration
{
    [XmlArray("CSVFile")]
    public List<string> CSVFile { get; set; }
}

【讨论】:

    【解决方案2】:

    您的 XML 定义与您的模型不匹配。

    <?xml version="1.0" encoding="utf-8" ?>
    <Configuration>
      <CSVFile>
        <csvstrings>ff</csvstrings>
        <csvstrings>gg</csvstrings>
        <csvstrings>jj</csvstrings>
      </CSVFile> 
    </Configuration>
    

    它需要以下模型:

    配置
    CSV文件

    所以,你的实现应该是:

    [Serializable]
    public class CSVFile
    {
        [XmlElement("csvstrings")]
        public List<string> csvstrings { get; set; }
    
        public CSVFile()
        {
    
        }
    }
    
    [Serializable, XmlRoot("Configuration"), XmlType("Configuration")]
    public class Configuration
    {
        public Configuration()
        {
    
        }
    
        [XmlElement("CSVFile")]
        public CSVFile csvs { get; set; }
    }
    
    public class Mytutorial
    {
        string configFilePath = "above xml file path"
    
        XmlSerializer serializer = new XmlSerializer(typeof(Configuration));
        FileStream xmlFile = new FileStream(configFilePath, FileMode.Open);
        Configuration con = (Configuration)serializer.Deserialize(xmlFile);
    }
    

    【讨论】:

    • 您更改了 xml 和类定义只是为了使其正常工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-18
    • 1970-01-01
    相关资源
    最近更新 更多