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;
原文地址:https://www.cnblogs.com/LoveTomato/p/9118213.html