运行时基于对象 属性 值的动态 XML 元素名称

Dynamic XML element names based on object property value in runtime

假设我有这样的结构

    public class Data
    {
        public string ElementName { get; set; }
        public string Content { get; set; }
    }

    public class XmlDoc
    {        
        public List<Data> Elements { get; set; } = new List<Data>(new[] { new Data { ElementName = "A", Content = "CA"}, nnew Data { ElementName = "B", Content = "CB" } })
    }

有没有办法让序列化格式看起来像

<XmlDoc>
    <A>CA</CA>
    <B><CB></CB>
<XmlDoc>

?

要点是标签名称是从集合项中动态生成的。

根据您的描述,我建议您尝试创建 XmlDocument 并根据您的 XmlDoc 添加元素 class 属性.

更多详情,您可以参考以下代码:

     XmlDoc x1 = new XmlDoc();
        XmlDocument doc = new XmlDocument();
       
        XmlElement root = doc.CreateElement(typeof(XmlDoc).Name);
        foreach (var item in x1.Elements)
        {
            XmlElement newelement = doc.CreateElement(item.ElementName);
            newelement.InnerText = item.Content;
            root.AppendChild(newelement);

        }

        doc.AppendChild(root);

        doc.Save(Console.Out);

结果: