【问题标题】:Dynamic XML element names based on object property value in runtime运行时基于对象属性值的动态 XML 元素名称
【发布时间】:2020-10-13 19:59:59
【问题描述】:

假设我有一个类似的结构

    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>

?

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

【问题讨论】:

    标签: asp.net-core .net-core xmlserializer


    【解决方案1】:

    根据您的描述,我建议您可以尝试创建 XmlDocument 并根据您的 XmlDoc 类属性添加元素。

    更多细节,您可以参考以下代码:

         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);
    

    结果:

    【讨论】:

    • 我这样做了。我认为最简单的方法是无需编写一些特殊的处理程序。 :)
    猜你喜欢
    • 1970-01-01
    • 2020-08-21
    • 1970-01-01
    • 2010-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-26
    • 1970-01-01
    相关资源
    最近更新 更多