读取xml文件转成List<T>对象的两种方法(附源码)
2013-12-12 10:06
639 查看
读取xml文件转成List<T>对象的两种方法(附源码)
读取xml文件,是项目中经常要用到的,所以就总结一下,最近项目中用到的读取xml文件并且转成List<T>对象的方法,加上自己知道的另一种实现方法。
就以一个简单的xml做例子。
xml格式如下:
Product对象如下:
要实现的就是要把xml文件的内容读取出来转成List<Product>对象,需求明白了,那接下来就来介绍实现的方法。
一、利用.net中的XmlSerializer类提供的方法
1、首先要在Product、Products类中的每个属性上加上与xml对应的描述字段,如下代码:
注意AttributeName一定要和xml中的一致。
2、相应的对应关系建立好了之后,下面就来进行读取反序列化,代码如下:
这个方法里也没什么特别的就是先读取.xml内容,然后再反Deserialize方法反序化xml内容转成Products。
这种方法大致就这么简单,我个人是比较倾向于这种方法的,因为它不用自己去解析xml中相应的属性等内容,也比较灵活,xml中的属性名变了,在类中相应的属性上改一下AttributeName的值就可以了。
二、利用linq进行转换
这个会linq的估计都知道吧,具体不多说了,代码如下:
以上就是这么多,其实很简单,就是记录下来,做一个笔记,如果各位看官有更好的实现方法,可以分享一下,大家互相学习学习!
源码下载
读取xml文件,是项目中经常要用到的,所以就总结一下,最近项目中用到的读取xml文件并且转成List<T>对象的方法,加上自己知道的另一种实现方法。
就以一个简单的xml做例子。
xml格式如下:
<?xml version="1.0"?> <products> <product name="West Side Story" price="9.99" supplierId="1" /> <product name="Assassins" price="14.99" supplierId="2" /> <product name="Frogs" price="13.99" supplierId="1" /> <product name="Sweeney Todd" price="10.99" supplierId="3" /> </products>
Product对象如下:
public class Product { public string Name { get; set; } public decimal Price { get; set; } public decimal SupplierId { get; set; } }
要实现的就是要把xml文件的内容读取出来转成List<Product>对象,需求明白了,那接下来就来介绍实现的方法。
一、利用.net中的XmlSerializer类提供的方法
1、首先要在Product、Products类中的每个属性上加上与xml对应的描述字段,如下代码:
[XmlRoot("products")] public class Products { [XmlElement("product")] public Product[] Items { get; set; } }
public class Product { [XmlAttribute(AttributeName = "name")] public string Name { get; set; } [XmlAttribute(AttributeName = "price")] public decimal Price { get; set; } [XmlAttribute(AttributeName = "supplierId")] public decimal SupplierId { get; set; } }
注意AttributeName一定要和xml中的一致。
2、相应的对应关系建立好了之后,下面就来进行读取反序列化,代码如下:
private static IList<Product> products=new List<Product>(); static LoadXml() { try { using (TextReader reader = new StreamReader("data.xml")) { var serializer = new XmlSerializer(typeof(Products)); var items = (Products)serializer.Deserialize(reader); if (items != null) { products = items.Items; } } } catch (Exception ex) { Console.WriteLine("出错了," + ex.Message); } }
这个方法里也没什么特别的就是先读取.xml内容,然后再反Deserialize方法反序化xml内容转成Products。
这种方法大致就这么简单,我个人是比较倾向于这种方法的,因为它不用自己去解析xml中相应的属性等内容,也比较灵活,xml中的属性名变了,在类中相应的属性上改一下AttributeName的值就可以了。
二、利用linq进行转换
这个会linq的估计都知道吧,具体不多说了,代码如下:
private static IList<Product> products=new List<Product>(); static LoadXml() { try { XDocument doc = XDocument.Load("data.xml"); products = doc.Descendants("product") .Select( x => new Product { Name = x.Attribute("name").ToString(), Price = (decimal)x.Attribute("price"), SupplierId = (long)x.Attribute("supplierId") }) .ToList(); } catch (Exception ex) { Console.WriteLine("出错了," + ex.Message); } }
以上就是这么多,其实很简单,就是记录下来,做一个笔记,如果各位看官有更好的实现方法,可以分享一下,大家互相学习学习!
源码下载
相关文章推荐
- 读取xml文件转成List<T>对象的两种方法(附源码)
- 读取xml文件转成List<T>对象的两种方法
- (转) 读取xml文件转成List<T>对象的两种方法
- 读取xml文件转成List<T>对象的两种方法
- 取xml文件转成List<T>对象的两种方法
- Android 将List<Bean>数据写入文件,从文件中读取;以及多个 Activity 的退出方法
- 读<<CLR via C#>>总结(2) 对象创建的原理和两种类型转换方法
- Spring事务管理+openJPA List<实体>方法更新所有对象
- 自定义类重载运算符<< >>,并用FileStorage保存和读取xml文件
- JS 使用List<Object> 对象中的Object对象的某个属性的临时处理方法
- 利用JAXBContext将xml文件转换成List<T>
- 读取导入excel表txt文档,并存储到List<E>对象中
- 解决 ”不允许在查询中显式构造实体类型“问题及使用其他方法实现返回 List<Model对象>或者IQueryable<Model对象>对象
- Windows无法从无人参与应答文件读取<ProductKey>设置解决方法
- 17开年第一篇Activity之间传递List<T> 以及T对象类型数据的方法
- 4种方法让SpringMVC接收多个对象 List<user> 表单提交,以BeanListModel接收
- java 从jar中读取文件 三种方法<Enumeration>
- scala调用java的方法,返回了一个对象链表List<Student>,在scala中遍历该链表获取指定Student的名字name
- JAVA源码分享:基于Apache POI,将List<T>内封装的实体类信息写出到磁盘Excel文件
- asp读取xml的两种方法(读取固定xml文件和读取url地址返回的xml)