从 xml 元素值设置模型属性
本文关键字:模型 属性 设置 xml 元素 | 更新日期: 2023-09-27 17:55:32
我有一个看起来像这样的 xml 文件
<Root>
<Element1>17890</Element>
<Element2>0001</Element2>
<Element3>123451324A</Element3>
<Element4>1</Element4>
<Element5>ABC</Element5>
<Element6>DEF</Element6>
<Element7>99.10</Element7>
<Element8>GHI</Element8>
<Element9>2014-01-25</Element9>
<Element10>JKL</Element10>
<Element11>737268</Element11>
</Root>
我有一个相应的类,它将所有元素名称作为属性。假设我有一个所有元素的集合,例如
IEnumerable<XElement> elements;
如何将类的属性值设置为 xml 文件中的元素值?
我唯一想到的是遍历元素并用
诸如...
case "Element3":
model.Element3 = element.Value;
break;
...
有没有更好的解决方案?
假设你已经有一个类模型,其中包含你想要从xml获取的字段:
var elements = XDocument.Load("XMLFile1.xml").Root.Elements();
var model = new Model()
{
Element1 = elements.FirstOrDefault(t => t.Name.LocalName == "Element1"),
Element2 = elements.FirstOrDefault(t => t.Name.LocalName == "Element2"),
};
另一种选择是创建字典,这样就不需要每次向 xml 文件添加新标记名称时都更新模型。
var model = new Dictionary<string, string>();
foreach(XElement tag in elements)
{
model[tag.Name.LocalName] = tag.Value;
}
或使用 Linq
var model = elements.ToDictionary(e => e.Name.LocalName, e => e.Value);
最后,您可以直接从 xml 生成动态对象。这里有一个示例:使用动态反序列化 XML 到对象