using System;
using System.Collections.Generic;
using System.Linq;
using System.Web; namespace WebApplication1.AppCode
{
using System.Reflection;
using System.Xml; public class XmlTools
{
static XmlHelper xmlHelper = new XmlHelper(); /// <summary>
/// 将节点属性 转换成 Dictionary<string, string>
/// </summary>
/// <param name="nodeName"></param>
/// <returns></returns>
public static Dictionary<string, string> GetNodeAttrDict(XmlNode node)
{
Dictionary<string, string> dict = new Dictionary<string, string>(); if (node != null)
{
foreach (XmlAttribute attr in node.Attributes)
{
dict.Add(attr.Name, attr.Value);
}
}
return dict;
} /// <summary>
/// 获取多个节点
/// </summary>
/// <param name="xPath"></param>
/// <returns></returns>
public static List<XmlNode> GetXmlNodes(string xPath)
{
return xmlHelper.GetXmlNodeList(xPath);
}
/// <summary>
/// 获取单个节点
/// </summary>
/// <param name="xPath"></param>
/// <returns></returns>
public static XmlNode GetXmlNode(string xPath)
{
return xmlHelper.GetXmlNode(xPath);
}
/// <summary>
/// 节点转换成实体列表
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="nodes"></param>
/// <returns></returns>
public static List<T> ConvertXml2Entity<T>(List<XmlNode> nodes) where T : class,new()
{
return xmlHelper.GetEntityListByXmlNode<T>(nodes);
} /// 节点转换为实体
/// 注意:没有匹配到的字段为NULL
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="node"></param>
/// <returns></returns>
public static T ConvertXml2Entity<T>(XmlNode node) where T : class,new()
{
return xmlHelper.GetEntityByXmlNode<T>(node);
} /// <summary>
/// 获取节点文本内容
/// </summary>
/// <param name="node"></param>
/// <returns></returns>
public static string GetNoteTxt(XmlNode node)
{
return node != null ? node.InnerText : "";
}
/// <summary>
/// 获取节点整数文本
/// </summary>
/// <param name="node"></param>
/// <returns></returns>
public static int GetNode2Int(XmlNode node)
{
int _result = 0;
if (node != null)
{
int.TryParse(node.InnerText.Trim(), out _result);
}
return _result;
} } public class XmlHelper
{
XmlDocument xmlDoc = new XmlDocument();
public XmlHelper()
{
string xmlPath = HttpRuntime.AppDomainAppPath + "\\Files\\BaseConfig.xml";
xmlDoc.Load(xmlPath);
} public List<XmlNode> GetXmlNodeList(string nodeName)
{
List<XmlNode> list = new List<XmlNode>();
XmlNodeList nodeList = xmlDoc.SelectNodes(nodeName);
foreach (XmlNode node in nodeList)
{
list.Add(node);
}
return list;
} public XmlNode GetXmlNode(string nodeName)
{
return xmlDoc.SelectSingleNode(nodeName);
} /// <summary>
/// 将节点属性 转换成 Dictionary<string, string>
/// </summary>
/// <param name="nodeName"></param>
/// <returns></returns>
public static Dictionary<string, string> GetNodeAttrDict(XmlNode node)
{
Dictionary<string, string> dict = new Dictionary<string, string>(); if (node != null)
{
foreach (XmlAttribute attr in node.Attributes)
{
dict.Add(attr.Name, attr.Value);
}
}
return dict;
} public List<T> GetEntityListByXmlNode<T>(List<XmlNode> nodeList) where T : class,new()
{
List<T> list = new List<T>();
foreach (XmlNode item in nodeList)
{
list.Add(GetEntityByXmlNode<T>(item));
}
return list;
} public T GetEntityByXmlNode<T>(XmlNode node) where T : class,new()
{
return ConvertXml2Entity<T>(node);
} private T ConvertXml2Entity<T>(XmlNode node) where T : class,new()
{
if (node == null)
{
return default(T);
}
var entity = new T();
List<PropertyInfo> propsList = entity.GetType().GetProperties().ToList(); foreach (PropertyInfo prop in propsList)
{
var nodeObj = node.Attributes[prop.Name];
if (nodeObj != null)
{
var objValue = GetPropValue(prop.PropertyType.Name, nodeObj.Value);
prop.SetValue(entity, objValue, null);
}
} return entity;
} private object GetPropValue(string propName, string data)
{
object obj = data;
switch (propName)
{ case "DateTime":
obj = DateTime.Parse(data);
break;
case "Boolean":
obj = Boolean.Parse(data);
break;
case "Int32":
obj = int.Parse(data);
break;
case "Int64":
obj = long.Parse(data);
break;
case "Double":
obj = double.Parse(data);
break;
} return obj;
} }
}

  

Xml的读取的更多相关文章

  1. php xml 文件读取 XMLReader

    php xml 文件读取 <?php /** $xmlString = '<xml> <persons count="10"> <person ...

  2. 利用反射与dom4j读取javabean生成对应XML和读取XML得到对应的javabean对象集合

    转自:http://blog.csdn.net/zhao19861029/article/details/8473245 首先实现生成对应的JAVAbean的XML文件方法 /** * DMO4J写入 ...

  3. Webwork 学习之路【05】请求跳转前 xwork.xml 的读取

    个人理解 WebWork 与 Struts2 都是将xml配置文件作为 Controler 跳转的基本依据,WebWork 跳转 Action 前 xml 文件的读取依赖 xwork-1.0.jar, ...

  4. 使用XmlPullParser对xml进行读取

    XML文件是一种标记性语言;在开发中经常在接口交互时被用作报文传输或者把自定义的类序列化为XML的形式存储到数据库.正因为XML文件这么常用,使用JAVA对XML文件进行读写操作是每一个开发人员必须掌 ...

  5. XML数据读取方式性能比较(一)

    原文:XML数据读取方式性能比较(一) 几个月来,疑被SOA,一直在和XML操作打交道,SQL差不多又忘光了.现在已经知道,至少有四种常用人XML数据操作方式(好像Java差不多),不过还没有实际比较 ...

  6. 使用OPEN XML SDK 读取EXCEL中的超链接Hyperlink

    使用OPEN XML SDK 读取EXCEL中的超链接Hyperlink 原理 先创建一个包括全部EXCEL单元格中超链接Hyperlink数据的表,再定位单元格通过列头(如A1,B1)获取超链接信息 ...

  7. Java 操纵XML之读取XML文件

    Java 操纵XML之读取XML文件 一.JAVA DOM PARSER DOM interfaces The DOM defines several Java interfaces. Here ar ...

  8. Webwork【05】请求跳转前 xwork.xml 的读取

    个人理解 WebWork 与 Struts2 都是将xml配置文件作为 Controler 跳转的基本依据,WebWork 跳转 Action 前 xml 文件的读取依赖 xwork-1.0.jar, ...

  9. javascript读取xml文件读取节点数据的例子

    分享下用javascript读取xml文件读取节点数据方法. 读取的节点数据,还有一种情况是读取节点属性数据. <head> <title></title> < ...

  10. C#中XML的读取

    本文主要介绍在C#中有关XML的读取,写入操作. 1.XML的内容如下: <?xml version="1.0" encoding="utf-8" ?&g ...

随机推荐

  1. BNUOJ 33895 D-City

    D-City Time Limit: 1000ms Memory Limit: 65535KB This problem will be judged on HDU. Original ID: 449 ...

  2. Oracle 关于几个随机函数sys_guid、dbms_random.random、dbms_random.value(取随机的结果集)

    sys_guid():SYS_GUID (),是Oracle 8i 后提供的函数.SYS_GUID产生并返回一个全球唯一的标识符(原始值)由16个字节组成.更适合多个数据库数据集成时使用(--源自百度 ...

  3. D - Guess UVALive - 4255 拓扑排序

    Given a sequence of integers, a1, a2, . . . , an, we define its sign matrix S such that, for 1 ≤ i ≤ ...

  4. c++中的set_new_handler和new_handler

    当operator new申请一个内存失败的时候,它会进行如下的处理步骤:    1.如果存在客户指定的处理函数,则调用处理函数(new_handler),如果不存在则抛出一个异常. 2.继续申请内存 ...

  5. 基于Volley,Gson封装支持JWT无状态安全验证和数据防篡改的GsonRequest网络请求类

    这段时间做新的Android项目的client和和REST API通讯框架架构设计.使用了非常多新技术,终于的方案也相当简洁优雅.client仅仅须要传Java对象,server端返回json字符串, ...

  6. wikioi 1029 中序遍历总数

    题意:给出前序遍历和后序遍历,求总共同拥有多少种中序遍历的可能. 思路: 对于一个节点.当且仅当它仅有一棵子树时,在保证先序和后序同样的前提下,才可能有不同的中序(它的子树可在左或右,所以有2种): ...

  7. 【bzoj1196】[HNOI2006]公路修建问题

    二分答案 验证有一种贪心的思想,就是如果这条路的c1比二分的值还小,那就要果断选择一级公路. 搜过一遍后,如果可供选择的一级公路小于k,就可以直接返回否了. 接下来继续选择,如果可以选到n-1条路,就 ...

  8. JavaScript Patterns 2.2 Minimizing Globals

    Access a global variable in a browser environment: myglobal = "hello"; // antipattern cons ...

  9. java dom4j 读写XML

    <?xml version="1.0" encoding="UTF-8"?> <Configuration> <Config id ...

  10. Black Rock Shooter

    在人气动漫 Black Rock shooter 中,当加贺里对麻陶 说出了"滚回去"以后,与此同时,在另一个心灵世界里, BRS 也遭到了敌人的攻击.此时,一共有 n 个攻击排成 ...