C# 序列化:将属性添加到节点列表

本文关键字:节点 列表 添加 属性 序列化 | 更新日期: 2023-09-27 18:32:57

我正在尝试生成以下 xml,唯一阻碍我的是在 cachestore/cachegroups 上添加组选择器类型属性。我只是不确定在哪里添加属性以及如何装饰它。

<cachestore >
            <cachegroups group-selector-type="">
                 <cachegroup  name="group 1" />
                 <cachegroup  name="group 1" />
            </cachegroups>    
</cachestore>

以下是我的 c# 类:

[XmlRoot("cachestore")]
public class CacheStoreConfig
{
    [XmlAttribute("type")]
    public String TypeName { get; set; }
    [XmlArray("cachegroups")]
    public List<CacheGroupConfig> CacheGroups { get; set; }
}
[XmlType("cachegroup")]
    public class CacheGroupConfig
    {
        [XmlAttribute("name")]
        public String Name { get; set; }
        [XmlAttribute("item-expiration")]
        public int ItemExpiration { get; set; }
        [XmlAttribute("max-size")]
        public string MaxSize { get; set; }
    }

真的很感谢任何帮助。谢谢!!!

C# 序列化:将属性添加到节点列表

你需要另一个类,并从 XmlArray 更改为 XmlElement。 该数组添加了您不需要的另一级标签。

    [XmlRoot("cachestore")]
    public class CacheStoreConfig
    {
        [XmlAttribute("type")]
        public String TypeName { get; set; }
        [XmlElement("cachegroups"]
        public CacheGroups cacheGroups { get; set; }
    }
    [XmlType("cachegroups")]
    public class CacheGroups
    {
        [XmlElement("cachegroups")]
        public List<CacheGroupConfig> CacheGroupConfig { get; set; }
        [XmlAttribute("group-selector-type")]
        public String group_selector_type { get; set; }
    }
    [XmlType("cachegroup")]
    public class CacheGroupConfig
    {
        [XmlAttribute("name")]
        public String Name { get; set; }
        [XmlAttribute("item-expiration")]
        public int ItemExpiration { get; set; }
        [XmlAttribute("max-size")]
        public string MaxSize { get; set; }
    }

将其添加到 CacheGroupConfig 类

        [XmlAttribute("group-selector-type")]
    public string group_selector_type = "Whatever";
是的,

很抱歉,我对这个问题的阅读不够。

我能够让我的 XML 看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
<cachestore xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <CacheGroups group-selector-type="bubba">
    <groups>
      <CacheGroupConfig name="Name1" item-expiration="10" max-size="10 tons" />
      <CacheGroupConfig name="Name2" item-expiration="20" max-size="100 Light Years" />
    </groups>
  </CacheGroups>
</cachestore>

使用以下类

public class CacheGroups
{
    [XmlAttribute("group-selector-type")]
    public string group_selector_type = "bubba";
    [XmlArray]
    public List<CacheGroupConfig> groups { get; set; }
}
public class CacheGroupConfig
{
    [XmlAttribute("name")]
    public string Name { get; set; }
    [XmlAttribute("item-expiration")]
    public int ItemExpiration { get; set; }
    [XmlAttribute("max-size")]
    public string MaxSize { get; set; }
    public CacheGroupConfig()
    {
        //empty
    }
    public CacheGroupConfig( string name, int itemExpiration, string maxSize)
    {
        Name = name;
        ItemExpiration = itemExpiration;
        MaxSize = maxSize;
    }
}
[XmlRoot("cachestore")]
public class CacheStoreConfig
{
    [XmlAttribute("type")]
    public string TypeName { get; set; }
    public CacheGroups CacheGroups { get; set; }
}

希望这有所帮助,如果不是抱歉浪费您的时间。