gpt4 book ai didi

c# - 使用动态特性读取 XML 结构

转载 作者:太空宇宙 更新时间:2023-11-03 10:39:52 24 4
gpt4 key购买 nike

假设我有一个加载到 XElement 或类似文件中的 XML 文件。达到标记值的一种方法是使用 Element() 方法。

有什么方法可以使用动态对象来促进这一点。例如我想替换

var val = xelement.Element("Name").Value

var dyn = (dynamic)xelement;
var val = dyn.Name;

嵌套属性也是个好主意。例如:

var val = dyn.Person.Name;

或者更好:

var val = dyn.Children.Where(c=>c.Name == "Mehran").FirstOrDefault().Age;

最佳答案

我相信我已经以博客文章的形式回答了您的问题,您可以在 http://blog.waseem-sabjee.com/2014/09/14/how-to-convert-an-xml-document-to-a-dynamic-object-in-net/ 阅读该文章

博文还包含一个工作解决方案的下载链接。

这里有一些实现代码供您查看:(注意 ToDynamicList 方法是一个扩展方法,它的代码可以在我的博客上找到。)

            XElement doc = XElement.Load(reader);

// using our ToDynamicList (Extenion Method)
var people = doc.ToDynamicList();

// loop through each person
foreach (dynamic person in people.Where(X => X.Name == "Waseem"))
{
Console.WriteLine("id:\t" + person.Id);
Console.WriteLine("Name:\t" + person.Name);
Console.WriteLine("Age:\t" + person.Age);
Console.WriteLine("----------------------------------");
try
{
// loop through children, if any
foreach(dynamic child in person.Children)
{
Console.WriteLine("\tid:\t" + child.Id);
Console.WriteLine("\tName:\t" + child.Name);
Console.WriteLine("\tAge:\t" + child.Age);
}
Console.WriteLine("----------------------------------");
}
catch(Exception ex)
{
}
}

}

关于c# - 使用动态特性读取 XML 结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25832349/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com