当前位置:网站首页> 科技>正文

C#怎么读取XML C#三种读取XML方法介绍

发布于:2020-07-27 16:09:27发布者:天晴网友

XML文件是一种常用的文件格式,例如WinForm里面的app.config以及Web程序中的web.config文件,还有许多重要的场所都有它的身影。(类似还有Json)微软也提供了一系列类库来倒帮助我们在应用程序中存储XML文件。那么问题来了,在使用C#的时候有哪些方法可以读取xml文件呢?下面就和小编一起来看看吧!

C#中三种读取XML文件方法如下:

1.使用 Xmldocument(DOM模式)

2.使用 XmlTextReader(流模式)

3.使用 Linq to Xml(Linq模式)

使用XmlDocument方式读取

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

xn 代表一个结点

xn.Name;//这个结点的名称

xn.Value;//这个结点的值

xn.ChildNodes;//这个结点的所有子结点

xn.ParentNode;//这个结点的父结点

读取所有数据

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

BookModel是图书模型

#region XmlDocument读取

public static void XmlDocumentReadDemo()

{

//list

List bookModeList = new List();

//使用的时候,首先声明一个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得到指定的结点,通过.etAttribute得到具体的属性值.参看下面的代码

// 得到根节点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()方法来不断的向下读,根据读取的结点的类型来进行相应的操作.如下:

#region XmlTextReaderDemo

public static void XmlTextReaderDemo()

{

XmlTextReader reader = new XmlTextReader(@"d:/demo.xml");

List modelList = new List();

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.MoveToAttribute(i);

//}

}

if (reader.NodeType == XmlNodeType.EndElement)

{

modelList.Add(model);

model = new BookModel();

}

}

reader.Close();

modelList.Add(new BookModel());

}

#endregion XmlTextReaderDemo

使用 Linq to Xml读取

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

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

#region 读取所有的数据

XElement xe = XElement.Load(@"d:/demoLinq.xml");

//xe.Descendants

var elements = from ele in xe.Elements()

select ele;

List modelList = new List();

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 读取所有的数据

OK,以上就是小编为大家带来的C#读取XML文件的三种方法。想要了解更多信息,请关注我们天晴滚动网吧!

点击展开全文
相关数码科技+更多
  • win10任务栏卡死怎么解决 任务栏卡死解决方法

    近日,有win10用户反映在使用win10电脑的时候,任务栏出现了卡死的情况,点击任何图标都没有反映,任何按键也无济于事,给操作造成了很大的不便。那么win10任务栏卡死怎么解决呢

  • win10文件删除不了怎么办 win10文件删除不了解决方法

    最近,有win10系统用户向天晴滚动反应,在删除一些没有用的文件时,遇到了文件删除不了提示需要管理员权限的情况,用户不知道应该怎么解决,为此苦恼着,那么,win10文件删除不了

  • win10系统怎么禁止更新应用商店

    win10系统应用商店中的应用有很多,基本上每天都会有更新的应用,但是在更新应用的时候,就会拖慢系统的速度,那么win10系统怎么禁止更新应用商店呢?今天就为大家介绍win10系统禁止

  • win10系统bitlocker加密密钥无法保存怎么办

    在win10系统当中,为了防止密钥的丢失,很多小伙伴都会把bitlocker加密的密钥保存到微软账户当中,不过有用户碰到了无法保存的情况,那么win10系统bitlocker加密密钥无法保存怎么办呢

  • win10系统硬盘占用率100%怎么办

    虽然现在的电脑硬盘越来越大了,但是有win10系统用户反映说电脑什么也没开就发现硬盘占用率很高,甚至达到100%,电脑几乎要罢工的节奏,那么win10系统硬盘占用率100%怎么办呢?今天就

  • win10系统下guest账户怎么开启

    在win10系统当中,除了管理员账户之外,还有一个guest账户,也就是所谓的来宾账户。通过guest账户,别人可以从其他的计算机来访问自己的电脑,在操作上带来了一定的便捷性,但是同

文章评论