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

下面是“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日

相关文章

  • spring使用OXM进行对象XML映射解析

    首先让我们来简单介绍一下“OXM”(Object/XML Mapper)技术:它是指将Java对象与XML文档之间进行相互转换的技术。在Spring Framework中,我们可以使用OXM来实现对象和XML文档之间的相互映射解析。 接下来,我们将详细说明,如何在Spring Framework中使用OXM进行对象XML映射解析。步骤如下: 步骤一:添加相关…

    html 2023年5月30日
    00
  • Win10连接远程桌面的时候提示您的凭证不工作该怎么办?

    以下是iOS 8越狱安装iFile插件的攻略: 下载安装Cydia:在iOS 8设备上进行越狱后,您需要下载安装Cydia应用商店。您可以在越狱工具中选择安装Cydia。 打开Cydia:在安装完成Cydia后,打开Cydia应用。 搜索iFile插件:在Cydia应用中,搜索“iFile”插件。 安装iFile插件:在搜索到iFile插件后,点击“安装”按…

    html 2023年5月17日
    00
  • python解析xml模块封装代码

    下面我将为你详细讲解“Python解析XML模块封装代码”的完整攻略。 1. 什么是XML? XML全称Extensible Markup Language,即可扩展标记语言。XML是一种用于存储和传输数据的标记语言,常被作为各种数据格式的基础,如HTML、RSS、Atom等。 2. Python中解析XML的模块 Python提供了多种方式来解析XML,并…

    html 2023年5月30日
    00
  • PHP页面转UTF-8中文编码乱码的解决办法

    下面就是PHP页面转UTF-8中文编码乱码的解决办法的完整攻略。 背景 在 web 开发中,有时我们会遇到 PHP 页面中文编码乱码的情况,这给用户的阅读体验和开发者的开发效率都带来很大的影响。本文将介绍 PHP 页面转 UTF-8 中文编码乱码的解决办法。 原因 引起 PHP 页面中文编码乱码的原因可能有很多,常见的有以下两个: 页面编码和数据库编码不一致…

    html 2023年5月31日
    00
  • 关于HTML5你必须知道的28个新特性,新技巧以及新技术

    关于HTML5你必须知道的28个新特性,新技巧以及新技术 HTML5是HTML的最新版本,其中包含了许多新的特性和技术。下面是一些值得注意的HTML5新特性和技巧: 新语义标签 新增了许多新语义标签,如<header>, <footer>, <nav>, <article>, <section>等。…

    html 2023年5月30日
    00
  • iPhone上怎么安装deb文件的教程

    iPhone上怎么安装deb文件的教程? .deb文件是Debian软件包格式,通常用于在Debian和Ubuntu等Linux发行版中安装软件。在iPhone上,您可以使用Cydia Impactor或Filza等工具安装.deb文件。以下是关于如何在iPhone上安装.deb文件的攻略,包括以下几个步骤: 步骤1:下载.deb文件 在安装.deb文件之前…

    html 2023年5月17日
    00
  • 3dsmax两个物体怎么对齐?

    3dsmax两个物体怎么对齐? 在3dsmax中,您可以使用多种方法对齐两个物体。以下是关于如何对齐两个物体的攻略,包括以下几个步骤: 步骤1:选择要对齐的物体 在3dsmax中,您需要选择要对齐的物体。以下是选择物体的步骤: 打开3dsmax软件。 打开场景文件。 选择要对齐的物体。 步骤2:使用对齐工具 在3dsmax中,有多种对齐工具可供选择。以下是使…

    html 2023年5月17日
    00
  • touchscale屏幕电子秤如何操作 touchscale屏幕电子秤怎么打开

    以下是“touchscale屏幕电子秤如何操作 touchscale屏幕电子秤怎么打开”的完整攻略: touchscale屏幕电子秤如何操作?touchscale屏幕电子秤怎么打开? touchscale屏幕电子秤是一种高精度的电子秤,具有触摸屏幕和多种功能。下面是操作touchscale屏幕电子秤和打开的详细攻略。 操作touchscale屏幕电子秤 打开…

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