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日

相关文章

  • 小结下MySQL中文乱码,phpmyadmin乱码,php乱码 产生原因及其解决方法第3/3页

    下面是关于“小结下MySQL中文乱码,phpmyadmin乱码,php乱码 产生原因及其解决方法”的完整攻略: 1. 产生原因 MySQL中中文乱码主要是因为以下两个原因: MySQL默认字符集为latin1,而不是utf8。这导致MySQL无法正确存储和处理中文字符,从而出现乱码问题。 连接MySQL数据库时的字符集与MySQL数据库的字符集不匹配。如果P…

    html 2023年5月31日
    00
  • 抖音如何进入下一个流量池?怎么看流量池

    以下是“抖音如何进入下一个流量池?怎么看流量池”的完整攻略: 抖音如何进入下一个流量池?怎么看流量池 抖音是一款非常流行的短视频应用程序,用户可以通过抖音获得大量的流量。下面是进入下一个流量池的详细攻略。 抖音如何进入下一个流量池 发布高质量的视频:用户需要发布高质量的视频,包括内容、画面、音效等方面。只有发布高质量的视频,才能吸引更多的用户观看和点赞。 保…

    html 2023年5月18日
    00
  • mybatis mapper.xml 区间查询条件详解

    下面我来详细讲解“mybatis mapper.xml 区间查询条件详解”的完整攻略。 1. 概述 在MyBatis的mapper.xml文件中,我们可以使用条件语句(\<if>、\<where>、\<foreach>等)来实现区间查询。具体来说,在进行区间查询时需要使用到两个关键字:$gt和$lt分别表示大于和小于。 2…

    html 2023年5月30日
    00
  • SAPIEN PrimalXML注册机使用教程 附激活补丁下载

    下面是详细讲解“SAPIEN PrimalXML注册机使用教程 附激活补丁下载”的完整攻略。 简介 SAPIEN PrimalXML是一款XML文件编辑器,是Windows平台上的一款工具软件。如果想要永久使用PrimalXML的所有功能,需要购买正版的注册码。但是在互联网上,也有很多人提供注册机和激活补丁,使用这些工具可以破解PrimalXML软件,从而使…

    html 2023年5月30日
    00
  • HTML的meta标签常见用法集锦

    HTML中的meta标签是一种元数据标记,它提供了关于HTML页面的额外信息,包括页面的标题、关键字、描述和作者等信息。在本篇攻略中,我们将分别讲解meta标签在网页SEO优化、响应式设计和浏览器兼容性方面的常见用法。 网页SEO优化 设置页面描述和关键字 <head> <meta name="description" …

    html 2023年5月30日
    00
  • 关于a href传参的中文乱码问题

    关于 a href 传参的中文乱码问题,要解决这个问题,我们需要进行以下几个步骤: 问题分析 当我们使用 a 标签传递中文参数时,浏览器会将中文进行URL编码, 例如: <a href="test.php?name=张三&age=18">点击访问</a> 该链接实际传递的参数是 name=%E5%BC%A0…

    html 2023年5月31日
    00
  • 19款Javascript富文本网页编辑器

    我们来详细讲解一下“19款Javascript富文本网页编辑器”的完整攻略。 什么是JavaScript富文本网页编辑器? JavaScript富文本网页编辑器是一种基于网页浏览器的编辑器,它提供了丰富的文本编辑功能,比如字体、字号、颜色、段落、图片、表格、超链接等,让用户可以在网页上方便地进行富文本编辑。 在网站中应用JavaScript富文本网页编辑器的…

    html 2023年5月30日
    00
  • 谷歌浏览器怎么翻译网页?谷歌浏览器网页翻译功能使用方法介绍

    谷歌浏览器是一款功能强大的浏览器,它提供了网页翻译功能,可以帮助用户快速翻译网页内容。下面是谷歌浏览器网页翻译功能使用方法介绍: 步骤1:打开需要翻译的网页 打开谷歌浏览器,输入需要翻译的网页地址。 打开网页后,如果该网页不是您的语言,谷歌浏览器会自动弹出翻译提示。 步骤2:使用谷歌浏览器翻译功能 点击翻译提示,谷歌浏览器会自动将网页翻译成您的语言。 如果没…

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