使用C#读取XML数据的三种方法

2022/3/27 14:22:35

本文主要是介绍使用C#读取XML数据的三种方法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

来源:C#读取XML的三种实现方式_C#教程_脚本之家 (jb51.net)

使用 Linq to Xml读取

Linq是C#3.0中出现的一个新特性,使用它可以方便的操作许多数据源,也包括XML文件.使用Linq操作XML文件非常的方便,而且也比较简单。

必须引用using System.Linq;using System.Xml.Linq;

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 #region 读取所有的数据   XElement xe = XElement.Load(@"d:/demoLinq.xml"); //xe.Descendants var elements = from ele in xe.Elements()         select ele; List<BookModel> modelList = new List<BookModel>(); foreach (var ele in elements) {   BookModel model = new BookModel();   model.BookAuthor = ele.Element("author").Value;   model.BookName = ele.Element("title").Value;   model.BookPrice = Convert.ToDouble(ele.Element("price").Value);   model.BookISBN = ele.Attribute("ISBN").Value;   model.BookType = ele.Attribute("Type").Value;     modelList.Add(model); } modelList.Add(new BookModel());   #endregion 读取所有的数据

使用XmlDocument方式读取

使用XmlDocument是一种基于文档结构模型的方式来读取XML文件.在XML文件中,我们可以把XML看作是由文档声明(Declare),元素(Element),属性(Attribute),文本(Text)等构成的一个树.最开始的一个结点叫作根结点,每个结点都可以有自己的子结点.得到一个结点后,可以通过一系列属性或方法得到这个结点的值或其它的一些属性.例如:

1 2 3 4 5 xn 代表一个结点 xn.Name;//这个结点的名称 xn.Value;//这个结点的值 xn.ChildNodes;//这个结点的所有子结点 xn.ParentNode;//这个结点的父结点

读取所有数据

使用的时候,首先声明一个XmlDocument对象,然后调用Load方法,从指定的路径加载XML文件.

BookModel是图书模型

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 #region XmlDocument读取   public static void XmlDocumentReadDemo() {   //list   List<BookModel> bookModeList = new List<BookModel>();     //使用的时候,首先声明一个XmlDocument对象,然后调用Load方法,从指定的路径加载XML文件.   XmlDocument doc = new XmlDocument();     XmlReaderSettings settings = new XmlReaderSettings();   settings.IgnoreComments = true;//忽略文档里面的注释   using (XmlReader reader = XmlReader.Create(@"d:/demo.xml", settings))   {     doc.Load(reader);     //doc.Load(@"d:/demo.xml");     //然后可以通过调用SelectSingleNode得到指定的结点,通过GetAttribute得到具体的属性值.参看下面的代码     // 得到根节点bookstore     XmlNode xn = doc.SelectSingleNode("bookstore");     // 得到根节点的所有子节点     XmlNodeList xnl = xn.ChildNodes;       foreach (XmlNode xn1 in xnl)     {       BookModel bookModel = new BookModel();       // 将节点转换为元素,便于得到节点的属性值       XmlElement xe = (XmlElement)xn1;       // 得到Type和ISBN两个属性的属性值       bookModel.BookISBN = xe.GetAttribute("ISBN").ToString();       bookModel.BookType = xe.GetAttribute("Type").ToString();       // 得到Book节点的所有子节点       XmlNodeList xnl0 = xe.ChildNodes;       bookModel.BookName = xnl0.Item(0).InnerText;       bookModel.BookAuthor = xnl0.Item(1).InnerText;       bookModel.BookPrice = Convert.ToDouble(xnl0.Item(2).InnerText);         bookModeList.Add(bookModel);     }   }   bookModeList.Add(new BookModel()); }   #endregion XmlDocument读取

运行结果如下:

 

 使用XmlTextReader方式读取

使用XmlTextReader读取数据的时候,首先创建一个流,然后用read()方法来不断的向下读,根据读取的结点的类型来进行相应的操作.如下:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 #region XmlTextReaderDemo   public static void XmlTextReaderDemo() {   XmlTextReader reader = new XmlTextReader(@"d:/demo.xml");   List<BookModel> modelList = new List<BookModel>();   BookModel model = new BookModel();   while (reader.Read())   {     if (reader.NodeType == XmlNodeType.Element)     {       if (reader.Name == "book")       {         model.BookType = reader.GetAttribute("Type");         model.BookISBN = reader.GetAttribute("ISBN");       }       if (reader.Name == "title")       {         model.BookName = reader.ReadElementContentAsString();       }       if (reader.Name == "author")       {         model.BookAuthor = reader.ReadElementString().Trim();       }       if (reader.Name == "price")       {         model.BookPrice = Convert.ToDouble(reader.ReadElementString().Trim());       }       //for(int i=0;i<reader.AttributeCount;i++)       //{       //  reader.MoveToAttribute(i);       //}     }       if (reader.NodeType == XmlNodeType.EndElement)     {       modelList.Add(model);       model = new BookModel();     }   }   reader.Close();   modelList.Add(new BookModel()); }   #endregion XmlTextReaderDemo


这篇关于使用C#读取XML数据的三种方法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程