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);
结果:
我确实这么做了。我认为最简单的方法是不写一些特殊的处理程序。:)