.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>
.net4 dynamic parse xml的更多相关文章
- Parse xml/json[xpath/jpath]
import groovy.util.XmlSlurper import groovy.util.XmlParser import com.eviware.soapui.support.GroovyU ...
- [Android] Android Build 时报错: java.io.IOException: Could not parse XML from android/accounts/annotations.xml
Android构建时报错: app:lintVitalRelease[Fatal Error] :3:214: 与元素类型 “item” 相关联的 “name” 属性值不能包含 ‘<’ 字符. ...
- python parse xml using DOM
demo: import xml.dom.minidom dom=xml.dom.minidom.parse('sample.xml')root = dom.documentElementcc=dom ...
- 【RF库XML测试】parse xml
Name:Parse XmlSource:XML <test library>Arguments:[ source | keep_clark_notation=False ]Parses ...
- 递归方式 DOM 解析(parse) XML
friends.xml <span style="font-size:16px;"><?xml version="1.0" encoding= ...
- parse XML & JSON & js
parse XML & JSON & js how to parse xml data into json in js? https://stackoverflow.com/quest ...
- parse XML & js
parse XML & js how to parse xml data in js? https://stackoverflow.com/questions/17604071/parse-x ...
- idea报错。Error:Failed to load project configuration: cannot parse xml file E:\project\.idea\workspace.xml: Error on line 1: 前言中不允许有内容。
因为电脑卡死强制重启电脑后打开idea,进行junit单元测试报错: idea报错.Error:Failed to load project configuration: cannot parse x ...
- (C#) Parse xml 时, 返回的node值总是null。
网上查了一下,原因在于要parse的Xml文件本身包含了一些namespace,这些需要被添加进去. http://msdn.microsoft.com/zh-cn/library/system.xm ...
随机推荐
- Problem A: 深入浅出学算法022-汉诺塔问题II
#include<stdio.h> void hanio(int n,char a,char b,char c) { ) printf("%c->%c\n",a, ...
- insert into table(key)value('value') on duplicate key update key=value
MYSQL篇 新增如果unique索引字段重复,则更新: insert into mg_user(key,key2,key3)value('value','value2','value3') on d ...
- openstack-cinder-netapp
https://communities.netapp.com/docs/DOC-31749 http://docs.openstack.org/havana/config-reference/cont ...
- 通过LoadBalancerClient获取所有服务列表的IP
说明:LoadBalanced采用轮训的方式请求服务提供者,但是如果针对某些业务需要精确到某个服务提供者或者遍历所有的服务提供者,那么可以通过LoadBalancerClient去获得. 参考: ht ...
- 给XC2440开发板烧写程序的N种方式
转:http://blog.chinaunix.net/uid-22030783-id-3420080.html 给XC2440开发板烧写程序非常灵活,总结起来有这么几种方式: 空片烧写(flas ...
- openfire自定义发送消息
加入以下类: 这个是xml格式的,解析时可以将xml转成map,参数可自由定义 import org.jivesoftware.smack.packet.PacketExtension; /** * ...
- Android Parcel对象详解
关于Parcel的使用 在分析Parcel之前,首先按照分析流程,介绍下关于Parcel的相关常规使用. 首先是关于Parcel的获取: Parcel parcle = Parcel.Obtain() ...
- jquery动态添加表单数据
动态添加用户 实现代码 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html ...
- 向PE文件植入后门代码技术讨论
写在前面的话 这篇文章将介绍使用codecaves对PE文件植入后门代码.有几个很好的工具可以帮到你了.比如BackdoorFactory和Shelter将完成相同的工作,甚至绕过一些静态分析几个防病 ...
- redis-3.28 一主二从模式介绍、主从从模式介绍、sentinel模式一主两从高可用
一.redis-3.28部署 yum install gcc tclwget http://download.redis.io/releases/redis-3.2.8.tar.gztar -zxvf ...