运行时基于对象 属性 值的动态 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);
结果:
假设我有这样的结构
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);
结果: