C#读取XML的三种实现方式

如何使用C#读取XML文档?这是很多C#开发者经常遇到的问题。在本篇文章中,会详细介绍C#读取XML的三种实现方式。

一、使用XmlDocument

使用XmlDocument是读取XML文档最简单的方法。XmlDocument是System.Xml命名空间中的一个类,可以用来读取和操作XML文档。

步骤1:引用命名空间

在代码中引用System.Xml命名空间,所以需要先添加using声明。

using System.Xml;

步骤2:创建XmlDocument对象并加载XML文件

  1. 创建XmlDocument对象。
XmlDocument xmlDoc = new XmlDocument();
  1. 加载XML文件。
xmlDoc.Load("example.xml");

步骤3:获取XML文件中的数据

使用XmlDocument对象获取节点、属性或文本数据。

  1. 获取单个节点

首先需要获取XML文件中的一个节点。可以使用GetElementsByTagName()方法或SelectSingleNode()方法来获取节点。

XmlNodeList nodeList = xmlDoc.GetElementsByTagName("book");
XmlNode node = xmlDoc.SelectSingleNode("//book[@id='1']");
  1. 获取节点属性
string title = node.Attributes["title"].Value;
  1. 获取节点文本
string author = node["author"].InnerText;

示例说明

我们使用下面这个XML文件作为示例。该文件记录了两本书的信息,每本书包括一个ID、书名、作者和售价。

<?xml version="1.0" encoding="utf-8"?>
<books>
  <book id="1">
    <title>Book1</title>
    <author>Author1</author>
    <price>10.0</price>
  </book>
  <book id="2">
    <title>Book2</title>
    <author>Author2</author>
    <price>15.0</price>
  </book>
</books>

我们来读取这个文件中的数据。

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("example.xml");
XmlNodeList nodeList = xmlDoc.GetElementsByTagName("book");
foreach (XmlNode node in nodeList)
{
    string title = node["title"].InnerText;
    string author = node["author"].InnerText;
    string price = node["price"].InnerText;
    Console.WriteLine("Title:{0}, by {1}, price: {2}", title, author, price);
}

运行结果

Title:Book1, by Author1, price: 10.0
Title:Book2, by Author2, price: 15.0

二、使用LINQ to XML

LINQ to XML是.NET Framework 3.5中引入的。它提供了一种查询XML文档的方式,引入了一些新的类和方法。

步骤1:引用命名空间

在代码中需要使用System.Xml.Linq命名空间,所以需添加using声明。

using System.Xml.Linq;

步骤2:创建XDocument对象并加载XML文件

  1. 创建XDocument对象。
XDocument xDoc = XDocument.Load("example.xml");
  1. 加载XML文件。
xDoc.Load("example.xml");

步骤3:使用LINQ to XML查询XML文件中的数据

使用LINQ to XML查询XML文档中的节点、属性或文本数据。

  1. 获取单个节点

使用Element()方法来获取节点。

XElement bookElement = xDoc.Root.Element("book");
  1. 获取节点属性

使用Attribute()方法获取节点属性。

string title = (string)bookElement.Attribute("title");
  1. 获取节点文本

使用Element()方法获取子节点,并使用Value属性获取文本数据。

string author = (string)bookElement.Element("author").Value;

示例说明

使用上面的XML文件作为示例。

XDocument xDoc = XDocument.Load("example.xml");
var query = from book in xDoc.Descendants("book")
            select new {Title = (string)book.Element("title"), Author = (string)book.Element("author"), Price = (decimal)book.Element("price")};
foreach (var book in query)
{
    Console.WriteLine("Title: {0}, by {1}, price: {2}", book.Title, book.Author, book.Price);
}

运行结果

Title: Book1, by Author1, price: 10.0
Title: Book2, by Author2, price: 15.0

三、使用XmlReader

XmlReader是一个轻量级的XML解析器。它提供了一个流式读取XML文档的方式,可以避免将整个文档加载到内存中,适用于读取大型XML文件。

步骤1:引用命名空间

在代码中需要使用System.Xml命名空间,所以需添加using声明。

using System.Xml;

步骤2:创建XmlReader对象并打开XML文件

  1. 创建XmlReader对象。
XmlReader xmlReader = XmlReader.Create("example.xml");
  1. 打开XML文件。
xmlReader.Read();

步骤3:逐个读取XML文件中的元素

使用Read()方法从流中读取下一个XML元素。

  1. 读取元素名称

使用Name属性读取元素名称。

string elementName = xmlReader.Name;
  1. 读取元素属性

先使用MoveToFirstAttribute()方法将XmlReader移动到第一个属性,再使用ReadAttributeValue()方法读取属性值。

xmlReader.MoveToFirstAttribute();
string attributeName = xmlReader.Name;
string attributeValue = xmlReader.Value;
  1. 读取元素文本

使用ReadElementContentAsString()方法读取元素的文本内容。

string text = xmlReader.ReadElementContentAsString();

示例说明

使用上面的XML文件作为示例。

XmlReader xmlReader = XmlReader.Create("example.xml");
while (xmlReader.Read())
{
    if (xmlReader.NodeType == XmlNodeType.Element && xmlReader.Name == "book")
    {
        string title = xmlReader.GetAttribute("title");
        string author = xmlReader.GetAttribute("author");
        decimal price = decimal.Parse(xmlReader.GetAttribute("price"));
        Console.WriteLine("Title: {0}, by {1}, price: {2}", title, author, price);
    }
}

运行结果

Title: Book1, by Author1, price: 10
Title: Book2, by Author2, price: 15

至此,本文介绍了三种C#读取XML的方式,包括使用XmlDocument、LINQ to XML和XmlReader。每种方式都有其独特的特点,读者可以根据自己的需要选择合适的方式。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#读取XML的三种实现方式 - Python技术站

(0)
上一篇 2023年5月30日
下一篇 2023年5月30日

相关文章

  • ASP.net处理XML数据实例浅析

    下面我就来详细讲解一下“ASP.net处理XML数据实例浅析”的完整攻略。 1. 引言 近年来,随着XML技术的逐渐普及,越来越多的ASP.net开发者开始采用XML技术来处理数据。本文将从理论到实践,为大家详细讲解ASP.net处理XML数据的方法、技巧、注意事项等。 2. 理论 ASP.net处理XML数据的方法主要有两种,分别是DOM(文档对象模型)和…

    html 2023年5月30日
    00
  • Java通过XPath获取XML文件中符合特定条件的节点

    下面将会详细讲解Java如何通过XPath获取XML文件中符合特定条件的节点: 什么是XPath? XPath 是一种用于在 XML 文档中查找信息的语言,它是一种在XML文档中查找信息的方式。XPath 不仅可以用来查找元素,还可以用来查找属性、文本等信息。 在Java中使用XPath Java 中可以使用 javax.xml.xpath 包提供的 API…

    html 2023年5月31日
    00
  • XHTML网页教程

    下面是“XHTML网页教程”的完整攻略。 什么是XHTML网页? XHTML(可扩展超文本标记语言)是一种基于XML的网页标记语言,可以为Web文档提供结构、语义和样式。它是HTML的严格的、规范的形式,强制要求网页遵循规定的标记和语义。 XHTML网页教程 1. 创建XHTML文档 创建一个XHTML文档需要遵循以下步骤: 使用文本编辑器(如Notepad…

    html 2023年5月30日
    00
  • 详解PHP原生DOM对象操作XML的方法

    下面是“详解PHP原生DOM对象操作XML的方法”的完整攻略: 1. 简介 PHP原生DOM (Document Object Model)是一种基于树结构的API,用于处理XML文档的各种操作,如创建、读取、修改和删除XML节点。本篇攻略将详细介绍使用PHP原生DOM对象操作XML文档的方法。 2. 读取XML文档 首先,我们需要将XML文档加载到DOM对…

    html 2023年5月30日
    00
  • 全面解析HTML5中的标准属性与自定义属性

    全面解析HTML5中的标准属性与自定义属性 在HTML5中,标准属性指的是在W3C HTML规范中提到的属性,它们被广泛应用于各种HTML元素。自定义属性则指的是由开发者自己定义的属性,在HTML中通常使用data-*的形式定义。在本篇文章中,我们将详细讲解HTML5中的标准属性与自定义属性。 标准属性 href href属性用于定义页面之间的链接。可以在a…

    html 2023年5月31日
    00
  • 怎么解决DedecmsV5.7 SP1广告不能显示

    以下是“怎么解决DedecmsV5.7 SP1广告不能显示”的完整攻略: 怎么解决DedecmsV5.7 SP1广告不能显示? 如果您在使用DedecmsV5.7 SP1时遇到广告不能显示的问题,可以按照以下步骤进行解决: 检查广告位设置:首先,您需要检查广告位的设置是否正确。在后台管理界面中,选择“广告管理”,然后选择“广告位管理”。检查广告位的设置是否正…

    html 2023年5月18日
    00
  • jsp fckeditor 上传中文图片乱码问题的解决方法

    针对“jsp fckeditor 上传中文图片乱码问题的解决方法”这个问题,以下是详细攻略: 问题描述 在使用JSP集成FCKeditor富文本编辑器时,上传中文图片时会出现乱码问题。 解决方法 FCKeditor默认是以ISO-8859-1编码方式进行上传的,所以中文图片上传时会出现乱码问题。需要进行以下两个步骤的解决。 步骤一:修改FCKeditor配置…

    html 2023年5月31日
    00
  • MyBatis中criteria的or(或查询)语法说明

    首先,MyBatis中的criteria是用于构造SQL语句的查询条件的一种方式。其中,or语法可以使查询条件在多个条件之间取或(或者)的关系。具体用法如下: 1. or语法示例一 Example example = new Example(User.class); Example.Criteria criteria = example.createCrit…

    html 2023年5月30日
    00
合作推广
合作推广
分享本页
返回顶部