• .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>
  • 相关阅读:
    EF在二手市场中的使用
    二手商城集成jwt认证授权
    core3商城DDD实战(一)建模
    数组的逆序对
    C++实现线程安全的单例
    分配格充要条件的两种证明
    一个简单的日历系统(C++)
    HTTP基础--网页基础
    HTTP基础 --响应
    HTTP基础--请求
  • 原文地址:https://www.cnblogs.com/asingna/p/5386164.html
Copyright © 2020-2023  润新知