C#解析XML文件

1、XML文件的结构

涉及的相关名词有:节点(Node)、元素(Element)、属性(Attribute)、内容

详见:

XML文件示例:

<bookstore>
<book category="CHILDREN">
  <title>Harry Potter</title> 
  <author>J K. Rowling</author> 
  <year>2005</year> 
  <price>29.99</price> 
</book>
<book category="WEB">
  <title>Learning XML</title> 
  <author>Erik T. Ray</author> 
  <year>2003</year> 
  <price>39.95</price> 
</book>
</bookstore> 

(1)节点:可以理解为每个<>.XML节点表示单个XML片段,例如,起始元素及其属性、结束元素、文本或“类型化”文本内容,例如整数或字节数组。 

(2)元素(Element):开始标签直到结束标签包括的部分,例如上图中的<book category="CHILDREN">到</book>。

(3)属性(Attribute):<book category="CHILDREN">后面的category="CHILDREN"就是属性。

(4)内容:例如<year>、<price>标签里面的内容。

2、解析XML文件

目前查找到的通过C#解析XML文件的方式有两种:XmlDocument和XmlReader。

(1)XmlDocument

详见:XmlDocument 类 (System.Xml) | Microsoft Learn

①特点:

优点:可以对XML文件进行增删查改等操作

缺点:需要将整个文件加载到内存中,解析大型的XML文件会比较慢

②代码实现(不可直接使用)

using System.Xml;

XmlDocument xmlDocument = new XmlDocument();//实例化
xmlDocument.Load(filepath);//加载xml文件,文件路径为绝对路径
XmlNode xmlNode = xmlDocument.SelectSingleNode(xpath);//利用节点的层级关系选择节点
XmlNodeList xmlNodeList = xmlNode.ChildNodes;//将节点下的子节点集合成一个列表

(2)XmlReader

详见:xml::XmlReader 类 | Microsoft Learn

①特点

优点:只读取,速度很快

缺点:无法对XML文件进行增删查改,而且是单向读取

②代码实现(不可直接使用)

XmlReaderSettings xmlReaderSettings = new XmlReaderSettings();
//使用 Create 该方法获取 XmlReader 实例。 
//此方法使用 XmlReaderSettings 类指定要在创建的对象中 XmlReader 实现的功能。
xmlReaderSettings.IgnoreWhitespace = true;//忽略空白
xmlReaderSettings.IgnoreComments = true;//忽略注释
using (XmlReader xmlReader = XmlReader.Create(filepath, xmlReaderSettings))
{
    while (xmlReader.Read())
    {
        //写需要进行的操作
    }

3、思路发展

(1)纯用XmlDocument:解析大文件速度开始慢得让人无法接受(用我自己的电脑跑大概要三分钟)

(2)纯用XmlReader:比纯用XmlDocument快,但还是有点慢,于是开始基于对XML文件结构的理解,尝试找一些讨巧的方式

(4)目前思路

①通过XmlDocument将XML文件读取到内存中,用SelectNodes方法将所有的frames集合到一个XmlNodeList中

②通过XmlNodeReader方法根据需要在每一个节点中进行读取

猜你喜欢

转载自blog.csdn.net/simplenthpower/article/details/128669633