.net4 dynamic parse xml
using System.Collections.Generic; using System.Linq; using System.Xml.Linq; using System.Dynamic; namespace DynamicReadXml { public static class ExpandoXML { public static dynamic AsExpando(this XDocument xDocument) { return CreateExpando(xDocument.Root); } private static dynamic CreateExpando(XElement element) { var result = new ExpandoObject() as IDictionary<string, object>; if (element.Elements().Any(e => e.HasElements)) { var list = new List<ExpandoObject>(); result.Add(element.Name.ToString(), list); foreach (var childElement in element.Elements()) { list.Add(CreateExpando(childElement)); } } else { foreach (var leafElement in element.Elements()) { result.Add(leafElement.Name.ToString(), leafElement.Value); } } return result; } } }
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Xml.Linq; namespace DynamicReadXml { class Program { static void Main(string[] args) { var doc = XDocument.Load("employee.xml"); var result = doc.AsExpando(); foreach (var employee in result.Employees) { Console.WriteLine(employee.FirstName); } Console.ReadKey(); } } }
<?xml version="1.0" encoding="utf-8" ?> <Employees> <Employee> <FirstName>DebugLZQ1</FirstName> </Employee> <Employee> <FirstName>DebugLZQ2</FirstName> </Employee> <Employee> <FirstName>DebugLZQ3</FirstName> </Employee> <Employee> <FirstName>DebugLZQ4</FirstName> </Employee> <Employee> <FirstName>DebugLZQ5</FirstName> </Employee> <Employee> <FirstName>DebugLZQ6</FirstName> </Employee> </Employees>
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步