C# 解析XML和反序列化的示例

yizhihongxing

下面是“C# 解析XML和反序列化的示例”的完整攻略。

1. 简介

在 C# 中,解析 XML 和反序列化是非常常见的操作。本文将提供两个示例来演示如何完成这两个操作。

2. 解析XML

解析 XML 的核心是使用 .NET Framework 提供的 XmlDocument 类。这个类提供了许多方法来操作 XML。

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml("<book><title>Harry Potter</title><author>J. K. Rowling</author></book>");
XmlNode rootNode = xmlDoc.FirstChild;
XmlNode titleNode = rootNode.SelectSingleNode("title");
string title = titleNode.InnerText;
XmlNode authorNode = rootNode.SelectSingleNode("author");
string author = authorNode.InnerText;

这个示例创建了一个 XmlDocument 实例,并使用 LoadXml 方法来加载 XML。然后,使用 SelectSingleNode 方法检索节点,最后获取节点的 InnerText 即可。

3. 反序列化

反序列化是将 XML 文档转换为 .NET 对象的过程。在 C# 中,通常使用 XmlSerializer 类进行反序列化。

下面是一个简单示例:

public class Book
{
  public string Title { get; set; }
  public string Author { get; set; }
}

XmlSerializer serializer = new XmlSerializer(typeof(Book));
XmlReader reader = XmlReader.Create(new StringReader("<Book><Title>Harry Potter</Title><Author>J. K. Rowling</Author></Book>"));
Book book = (Book)serializer.Deserialize(reader);

在本例中,我们定义了一个 Book 类。然后,使用 XmlSerializer 类将 XML 转换为 Book 实例。

4. 示例说明

示例1:解析XML

假设我们有一个 XML 文档如下:

<products>
  <product id="1">
    <name>iPhone XR</name>
    <description>The latest iPhone from Apple.</description>
    <price>799</price>
  </product>
  <product id="2">
    <name>Samsung Galaxy S10</name>
    <description>The latest smartphone from Samsung.</description>
    <price>899</price>
  </product>
</products>

我们可以使用以下代码来解析 XML:

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(xmlString);
XmlNodeList productsNodeList = xmlDoc.SelectNodes("/products/product");
foreach (XmlNode productNode in productsNodeList)
{
    string id = productNode.Attributes["id"].Value;
    XmlNode nameNode = productNode.SelectSingleNode("name");
    string name = nameNode.InnerText;
    XmlNode descriptionNode = productNode.SelectSingleNode("description");
    string description = descriptionNode.InnerText;
    XmlNode priceNode = productNode.SelectSingleNode("price");
    string price = priceNode.InnerText;
    Console.WriteLine($"ID: {id}, Name: {name}, Description: {description}, Price: {price}");
}

其中,xmlString 是输入的 XML 字符串,上述代码将输出以下内容:

ID: 1, Name: iPhone XR, Description: The latest iPhone from Apple., Price: 799
ID: 2, Name: Samsung Galaxy S10, Description: The latest smartphone from Samsung., Price: 899

示例2:反序列化

假设我们有一个包含 Book 对象的 XML 文件如下:

<Books>
  <Book>
    <Title>Harry Potter</Title>
    <Author>J. K. Rowling</Author>
  </Book>
  <Book>
    <Title>The Hunger Games</Title>
    <Author>Suzanne Collins</Author>
  </Book>
</Books>

我们定义一个 Book 类,并使用 XmlSerializer 类来反序列化 XML 文件如下:

public class Book
{
  public string Title { get; set; }
  public string Author { get; set; }
}

XmlSerializer serializer = new XmlSerializer(typeof(List<Book>), new XmlRootAttribute("Books"));
List<Book> booksList;
using (FileStream stream = new FileStream(filename, FileMode.Open, FileAccess.Read))
{
    booksList = (List<Book>)serializer.Deserialize(stream);
}

其中,filename 是包含 XML 的文件名称。上述代码将反序列化 XML 并将其转换为一个 List 实例。

5. 总结

解析 XML 和反序列化是 C# 编程中经常需要用到的技能。使用 XmlDocument 类可以很容易地解析 XML,而 XmlSerializer 类则可以将 XML 转换为其他类型的对象。在处理 XML 时,请注意处理可能出现的异常,如未找到节点、类型转换异常等。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C# 解析XML和反序列化的示例 - Python技术站

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

相关文章

  • 怎么消除EV录屏噪音 EV录屏噪音大的去除方法

    以下是消除EV录屏噪音的攻略: EV录屏噪音大的去除方法 EV录屏是一款常用的屏幕录制软件,但是在录制过程中可能会出现噪音,影响录制效果。以下是消除EV录屏噪音的攻略: 调整麦克风设置:首先,打开EV录屏软件,进入“设置”页面。在“设置”页面中,找到“音频”选项,然后调整麦克风设置。您可以尝试调整麦克风的音量、增益等参数,以减少噪音。 使用降噪软件:如果调整…

    html 2023年5月17日
    00
  • Javaweb接收表单数据并处理中文乱码

    Javaweb 接收表单数据并处理中文乱码,一般可以通过以下几个步骤来实现: 1.设置 Request 对象的编码方式 在接收表单数据之前,需要先设置 Request 对象的编码方式,一般可以使用如下代码来设置: request.setCharacterEncoding("UTF-8"); 其中 “UTF-8” 表示编码方式,这里使用 U…

    html 2023年5月31日
    00
  • 怎么从Linux命令行刻录镜像文件到DVD光盘中

    在Linux命令行中,可以使用命令行工具来刻录镜像文件到DVD光盘中。以下是刻录镜像文件到DVD光盘的详细攻略: 步骤1:插入DVD光盘 将空白DVD光盘插入计算机的光驱中。 等待计算机检测到光盘并自动挂载。 步骤2:查看光盘设备名称 打开终端。 输入以下命令: bash dmesg | grep DVD 查找包含“DVD”的行,找到光盘设备名称,例如“/d…

    html 2023年5月17日
    00
  • Studio 3T怎么激活?Studio 3T 2019 64位无限试用安装激活教程(附下载)

    以下是Studio 3T激活攻略: 下载安装Studio 3T:首先,您需要下载并安装Studio 3T。您可以在官方网站上下载Studio 3T的安装程序。安装程序支持Windows、macOS和Linux操作系统。 获取激活码:在安装完成后,您需要获取Studio 3T的激活码。您可以在官方网站上购买激活码,或者使用一些免费的激活码。请注意,使用免费的激…

    html 2023年5月17日
    00
  • mysql命令提示行连接乱码的解决

    解决MySQL命令提示行连接乱码的步骤如下: 1.查看当前终端字符集编码 打开终端,执行如下命令: echo $LANG 该命令会显示当前终端使用的字符集编码,例如: zh_CN.UTF-8 如果该字符集编码为 UTF-8,则可以跳过步骤2,直接进入步骤3。 2.设置终端字符集编码 如果当前终端字符集编码不是 UTF-8,则需要切换终端字符集编码为 UTF-…

    html 2023年5月31日
    00
  • php的GD库imagettftext函数解决中文乱码问题

    下面是我为你准备的详细攻略。 GD库和imagettftext函数 首先,需要了解GD库和imagettftext函数的作用。GD库是PHP中非常常用的一个图像处理库,可以完成图像的生成、处理和输出。而imagettftext函数是GD库中用于在图像上绘制TrueType字体的函数,支持中文输出。 解决中文乱码问题的思路 在使用imagettftext函数输…

    html 2023年5月31日
    00
  • Win10系统总是锁屏关闭屏幕该怎么办?

    如果您的Windows 10系统总是锁屏关闭屏幕,以下是解决该问题的详细攻略: 步骤1:检查电源和屏幕设置 单击Windows 10系统的“开始”按钮。 选择“设置”图标。 选择“系统”。 选择“电源和睡眠”。 检查“屏幕关闭”和“睡眠”设置是否正确。 步骤2:禁用屏幕保护程序 单击Windows 10系统的“开始”按钮。 选择“设置”图标。 选择“个性化”…

    html 2023年5月17日
    00
  • excel乱码怎么办 excel乱码修复详细解决方法

    Excel乱码怎么办?Excel乱码修复详细解决方法 Excel表格中出现乱码是一个很常见的问题,主要有以下几种原因: 打开文件时未正确选择编码格式 文件本身存在问题或损坏 电脑操作系统或Excel程序本身存在问题 那么该如何解决Excel乱码问题呢?下面详细介绍Excel乱码修复的具体方法。 方法一:使用正确的编码格式打开Excel文件 首先,我们需要确保…

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