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日

相关文章

  • ajax中文乱码问题解决方案

    安装charset插件 其中之一的解决方案是使用charset插件。在你的ajax请求中,需要增加一个属性,用来指定字符编码。例如,如果你的网站使用GBK编码,那么你需要将ajax请求中的”charset”设置为”gbk”。如果使用UTF-8编码,则设置”charset”为”utf-8″。安装charset插件的命令如下: npm install chars…

    html 2023年5月31日
    00
  • SQLServer2005 XML数据操作代码

    以下是SQL Server 2005 XML 数据操作的完整攻略。 SQL Server 2005 XML 数据操作 将 XML 数据插入到数据库中 在 SQL Server 中,可以通过 INSERT INTO 语句将 XML 数据插入到数据库中。 首先,需要在数据库中创建一个表,该表包含一个 XML 类型的列,其语法如下: CREATE TABLE my…

    html 2023年5月30日
    00
  • asp.net中url字符串编码乱码的原因与解决方法

    ASP.NET中URL字符串编码乱码的原因与解决方法 介绍 在ASP.NET中,URL字符串编码是很重要的。但是,有时候在URL字符串编码的过程中会出现乱码的情况,这会给用户带来不便。那么,本文将讲解ASP.NET中URL字符串编码乱码的原因与解决方法。 原因 ASP.NET中URL字符串编码乱码的原因有多方面,如: 服务器编码格式与浏览器编码格式不统一 U…

    html 2023年5月31日
    00
  • win10安装软件出现乱码怎么办 win10新装软件显示乱码的解决方法

    win10安装软件出现乱码怎么办? 在Windows 10系统中,有时候我们安装一些软件时会出现乱码现象,影响软件的正常使用。这种情况一般是因为操作系统没有正确解析安装包中的编码格式或者缺失了相应的字体文件。下面我将提供两种针对这种情况的解决方法。 方法一:更改系统区域设置 有时候,系统区域设置不正确也会导致安装软件时出现乱码。以下是更改系统区域设置的步骤:…

    html 2023年5月31日
    00
  • Android中复制图片的实例代码

    请你先阅读以下完整的攻略: Android中复制图片的实例代码 在Android中,我们可以使用系统剪贴板来复制图片,这里提供一份Android中复制图片的实例代码。 步骤1:添加复制图片权限 在AndroidManifest.xml文件中添加以下权限: <uses-permission android:name="android.permi…

    html 2023年5月31日
    00
  • 安卓手机root后怎么删除软件具体实现步骤

    安卓手机root后怎么删除软件具体实现步骤? 在安卓手机root后,您可以删除预装软件或其他不需要的应用程序。以下是关于如何删除软件的攻略,包括以下几个步骤: 步骤1:安装Root管理器 在进行软件删除之前,您需要安装Root管理器。以下是两个常用的Root管理器: SuperSU Magisk 您可以从Google Play商店或其他应用商店下载和安装它们…

    html 2023年5月17日
    00
  • HTML5 微格式和相关的属性名称

    HTML5 微格式是指用于表示特定类型数据的 HTML 标记,在页面进行结构化、扩展和语义化时有重要的作用。而与此相关的属性名称是指用于表达微格式中特定意义的属性名称,使得浏览器和搜索引擎可以将页面中的数据转换成标准的格式并更好的理解页面内容。下面是 HTML5 微格式和相关属性名称的详细讲解攻略。 HTML5 微格式 HTML5 微格式是指用于标识网页内容…

    html 2023年5月30日
    00
  • c# winform读取xml文件创建菜单的代码

    下面是关于C# WinForm读取XML文件创建菜单的完整攻略: 1. 准备工作 在开始编写代码之前,首先需要准备好以下内容: .NET框架 Visual Studio或类似的编辑器 一个包含菜单数据的XML文件 2. 读取XML文件 首先,需要使用.NET框架提供的XML解析器类来读取XML文件。以下示例代码展示了如何读取XML文件并将其加载到一个XML文…

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