.NET怎么生成和解析XML文件

畫卷琴夢
发布: 2025-11-10 21:26:03
原创
712人浏览过
.NET中生成和解析XML常用XmlDocument、XDocument和XmlSerializer。XmlDocument基于DOM,适合复杂结构和频繁修改;XDocument为LINQ to XML,语法简洁,推荐新项目使用;XmlSerializer用于对象序列化,适合类与XML互转。根据需求选择:灵活操作选XDocument,对象映射用XmlSerializer,兼容旧项目用XmlDocument。

.net怎么生成和解析xml文件

.NET 提供了多种方式来生成和解析 XML 文件,最常用的是 XmlDocumentXDocument(LINQ to XML)XmlSerializer。下面分别介绍这三种方法的使用场景和代码示例。

使用 XmlDocument 生成和解析 XML

XmlDocument 是基于 DOM 的类,适合处理结构较复杂或需要频繁修改的 XML 文档。

生成 XML 示例:

XmlDocument doc = new XmlDocument();
XmlElement root = doc.CreateElement("Books");
doc.AppendChild(root);
<p>XmlElement book = doc.CreateElement("Book");
book.SetAttribute("Id", "1");</p><p>XmlElement title = doc.CreateElement("Title");
title.InnerText = "C# 入门";
book.AppendChild(title);</p><p>root.AppendChild(book);
doc.Save("books.xml"); // 保存到文件</p>
登录后复制

解析 XML 示例:

巧文书
巧文书

巧文书是一款AI写标书、AI写方案的产品。通过自研的先进AI大模型,精准解析招标文件,智能生成投标内容。

巧文书 61
查看详情 巧文书
XmlDocument doc = new XmlDocument();
doc.Load("books.xml");
<p>XmlNodeList books = doc.SelectNodes("//Book");
foreach (XmlNode book in books)
{
string id = book.Attributes["Id"]?.Value;
string title = book["Title"]?.InnerText;
Console.WriteLine($"ID: {id}, Title: {title}");
}</p>
登录后复制

使用 LINQ to XML(XDocument)操作 XML

XDocument 是 .NET 3.5 引入的现代 API,语法更简洁,推荐用于新项目。

生成 XML 示例:

XDocument doc = new XDocument(
    new XElement("Books",
        new XElement("Book",
            new XAttribute("Id", "1"),
            new XElement("Title", "C# 入门")
        )
    )
);
doc.Save("books.xml");
登录后复制

解析 XML 示例:

XDocument doc = XDocument.Load("books.xml");
var books = doc.Descendants("Book");
foreach (var book in books)
{
    string id = book.Attribute("Id")?.Value;
    string title = book.Element("Title")?.Value;
    Console.WriteLine($"ID: {id}, Title: {title}");
}
登录后复制

使用 XmlSerializer 序列化和反序列化对象

当你有现成的类结构,想直接转成 XML 或从 XML 还原对象时,XmlSerializer 是最佳选择。

定义类:

[Serializable]
public class Book
{
    [XmlAttribute("Id")]
    public int Id { get; set; }
<pre class='brush:php;toolbar:false;'>public string Title { get; set; }
登录后复制

}

[Serializable] [XmlRoot("Books")] public class BookList { [XmlElement("Book")] public List<Book> Books { get; set; } = new List<Book>(); }

序列化为 XML:

BookList list = new BookList();
list.Books.Add(new Book { Id = 1, Title = "C# 入门" });
<p>XmlSerializer serializer = new XmlSerializer(typeof(BookList));
using (StreamWriter writer = new StreamWriter("books.xml"))
{
serializer.Serialize(writer, list);
}</p>
登录后复制

从 XML 反序列化:

XmlSerializer serializer = new XmlSerializer(typeof(BookList));
using (StreamReader reader = new StreamReader("books.xml"))
{
    BookList list = (BookList)serializer.Deserialize(reader);
    foreach (var book in list.Books)
    {
        Console.WriteLine($"ID: {book.Id}, Title: {book.Title}");
    }
}
登录后复制

基本上就这些。根据你的需求选择合适的方式:操作灵活用 XDocument,处理对象映射用 XmlSerializer,老项目兼容可用 XmlDocument。不复杂但容易忽略命名空间和异常处理。

以上就是.NET怎么生成和解析XML文件的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号