XML
XML是一种简单数据存储语言,以文本的形式将数据存储到文件。
XML文件结构
- XML声明
<?xml version="1.0" encoding="utf-8"?>
包括版本和编码声明 - XML元素
<
开始>
结束为一个元素,包括名称和属性,也可包括子元素(开始节点和结束节点中)。 - XML节点:一个抽象概念,xml组成一棵树,每个节点有名称和类型
通过流操作XML
既然xml以文本保存在文件中,可以通过字符流操TextWriter
作文件。当然方便操作xml文档结构提供了XmlTextWriter
,XmlTextReader
。这里设计到文件流的操作,对于写入流:内存为流的源,硬盘文件为流的目的地。
using (XmlTextWriter writer = new XmlTextWriter(@"E:\MyBook.xml", Encoding.UTF8))
{
//声明xml为1.0
writer.WriteStartDocument();
writer.WriteStartElement("MyBook");
writer.WriteAttributeString("id", "1");
writer.WriteAttributeString("name", ".Net Core");
writer.WriteElementString("description", ".net 跨平台开发");
writer.WriteEndElement();
}
通过流读取文件
using (XmlTextReader reader = new XmlTextReader(@"E:\MyBook.xml"))
{
//逐个节点遍历
while (reader.Read())
{
//读取节点
string node =reader.Name;
string attribute = reader.GetAttribute("name");
}
}
XmlDocument将文件读取到内存中
通过流操作xml很不方便,尤其对于查找和更改操作。XmlDocument
实现是通过将xml文件以对于的形式加载到内存中,再直接操作内存中的xml数据,最后通过保存更改文档内容。
同大多数文档操作一样通过Load
将数据加载到内存,Save
将内存数据写入文件(Word和Excel虽然复杂原理应该一样)
string xmlPath = @"E:\MyBook.xml";
XmlDocument doc = new XmlDocument();
doc.Load(xmlPath);
XmlNode node = doc.SelectSingleNode("MyBook/book");
string nodename =node.Attributes["name"].InnerText;
if(node.NodeType == XmlNodeType.Element)
{
XmlElement element = (XmlElement)node;
element.SetAttribute("name", "Hello");
}
doc.Save(xmlPath);
Linq XML
为更方便的查找xml数据,将xml文件以XElement
对象的形式加载到内存,因XElement
操作更简单支持Linq
查询
XDocument xdoc = XDocument.Load(xmlPath);
var result = from ele in xdoc.Descendants("book")
where ele.Attribute("name").Value == ".Net Core"
select ele;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)