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>
时间: 2024-10-12 16:19:47