Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core 运行时基于对象属性值的动态XML元素名称_Asp.net Core_.net Core_Xmlserializer - Fatal编程技术网

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

Asp.net core 运行时基于对象属性值的动态XML元素名称,asp.net-core,.net-core,xmlserializer,Asp.net Core,.net Core,Xmlserializer,假设我有一个像 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>

假设我有一个像

    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" } })
    }
公共类数据
{
公共字符串ElementName{get;set;}
公共字符串内容{get;set;}
}
公共类XmlDoc
{        
公共列表元素{get;set;}=新列表(新[]{new Data{ElementName=“A”,Content=“CA”},新数据{ElementName=“B”,Content=“CB”})
}
有没有办法使序列化格式看起来像

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

加利福尼亚州
?


要点是标记名是从集合项动态生成的。

根据您的描述,我建议您尝试创建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);
结果:


我确实这么做了。我认为最简单的方法是不写一些特殊的处理程序。:)