Xml的读取
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的读取的更多相关文章
- php xml 文件读取 XMLReader
php xml 文件读取 <?php /** $xmlString = '<xml> <persons count="10"> <person ...
- 利用反射与dom4j读取javabean生成对应XML和读取XML得到对应的javabean对象集合
转自:http://blog.csdn.net/zhao19861029/article/details/8473245 首先实现生成对应的JAVAbean的XML文件方法 /** * DMO4J写入 ...
- Webwork 学习之路【05】请求跳转前 xwork.xml 的读取
个人理解 WebWork 与 Struts2 都是将xml配置文件作为 Controler 跳转的基本依据,WebWork 跳转 Action 前 xml 文件的读取依赖 xwork-1.0.jar, ...
- 使用XmlPullParser对xml进行读取
XML文件是一种标记性语言;在开发中经常在接口交互时被用作报文传输或者把自定义的类序列化为XML的形式存储到数据库.正因为XML文件这么常用,使用JAVA对XML文件进行读写操作是每一个开发人员必须掌 ...
- XML数据读取方式性能比较(一)
原文:XML数据读取方式性能比较(一) 几个月来,疑被SOA,一直在和XML操作打交道,SQL差不多又忘光了.现在已经知道,至少有四种常用人XML数据操作方式(好像Java差不多),不过还没有实际比较 ...
- 使用OPEN XML SDK 读取EXCEL中的超链接Hyperlink
使用OPEN XML SDK 读取EXCEL中的超链接Hyperlink 原理 先创建一个包括全部EXCEL单元格中超链接Hyperlink数据的表,再定位单元格通过列头(如A1,B1)获取超链接信息 ...
- Java 操纵XML之读取XML文件
Java 操纵XML之读取XML文件 一.JAVA DOM PARSER DOM interfaces The DOM defines several Java interfaces. Here ar ...
- Webwork【05】请求跳转前 xwork.xml 的读取
个人理解 WebWork 与 Struts2 都是将xml配置文件作为 Controler 跳转的基本依据,WebWork 跳转 Action 前 xml 文件的读取依赖 xwork-1.0.jar, ...
- javascript读取xml文件读取节点数据的例子
分享下用javascript读取xml文件读取节点数据方法. 读取的节点数据,还有一种情况是读取节点属性数据. <head> <title></title> < ...
- C#中XML的读取
本文主要介绍在C#中有关XML的读取,写入操作. 1.XML的内容如下: <?xml version="1.0" encoding="utf-8" ?&g ...
随机推荐
- xe的debug怪现象
死活有问题,而且不能重新编译生成文件. 查网上说明:在删除项目xxx.dproj文件后,然后打开dpk文件,会自动生成.dproj文件,再然后一切OK. 的确如此,但莫名其妙.
- 使用Mybatis-Generator自动生成Dao、Model、Mapping相关文件(转)-----https://www.cnblogs.com/smileberry/p/4145872.html
https://www.cnblogs.com/smileberry/p/4145872.html 使用Mybatis-Generator自动生成Dao.Model.Mapping相关文件(转)
- 【转】建立一个更高级别的查询 API:正确使用Django ORM 的方式
这个就比较深入啦... http://www.oschina.net/translate/higher-level-query-api-django-orm 结论: 在视图和其他高级应用中使用源生的O ...
- [bzoj3668][Noi2014]起床困难综合症_暴力
起床困难综合征 bzoj-3668 Noi-2014 题目大意:题目链接. 注释:略. 想法:Noi考这题...联赛T1难度.... 我们将每个门上的数二进制拆分. 发现:当前位的操作可能直接确定了当 ...
- SiteMesh基础教程
SiteMesh是由一个基于Web页面布局.装饰以及与现存Web应用整合的框架.它能帮助我们在由大量页面构成的项目中创建一致的页面布局和外观,如一致的导航条,一致的banner,一致的版权,等等. 教 ...
- MYSQL常用的性能指标
(1) QPS(每秒Query量) QPS = Questions(or Queries) / seconds mysql > show global status like 'Questio ...
- Workflow:添加工作流存储功能
数据库准备: 1. 创建database(这里我们用的是MSSQL.Workflow支持其它数据库,但是MSSQL是配置最方便,不要问我为什么!). 2. 运行位于[%WINDIR%\Microsof ...
- 1.3-动态路由协议EIGRP
EIGRP(Enhanced IGRP) EIGRP的特点: IGRP/EIGRP都是CISCO的私有协议. 1:是唯一的一种LS/DV的混合协议. 2:Rapid convergence EIGRP ...
- Go语言用堆排序的方法进行一千万个int随机数排序.
上篇文章用的是quicksort方法排序,可是假设用高速排序法对反复率非常高的slice排序的时候,时间复杂度会激增,速度相当慢 所以尝试了一下堆排序,实验结果,感觉挺好的.以下是代码,大家能够參考一 ...
- 解决MyEclipse中导入项目@Override错误
做项目的时候,同事那边电脑上编译通过的java代码,或者是网上下载的例子代码,导入project后却是编译不通过,总是@override报错,把@override去掉就好了,有时候@Override出 ...