Home > Backend Development > XML/RSS Tutorial > Detailed code examples for interpreting and writing XML files

Detailed code examples for interpreting and writing XML files

黄舟
Release: 2017-03-23 16:41:56
Original
2139 people have browsed it

This article will cover 3 aspects:
1. Accessing XML files
2. XML Document Object Model
3. XML and DataSet

Here we first introduce two objects for operating XML files: XmlTextReader and XmlTextWriter
The object used to open and read Xml files is the XmlTextReader object. The following example opens a sample file sample.xml

XmlTextReader reader = new XmlTextReader("sample.xml");
Copy after login

in the same path as the program. Then we can automatically facilitate the XML file through its Read method. Example:

while(reader.Read())
{
       //在这里填写对于XML的操作代码
}
Copy after login

Let’s look at a more complicated example.

while(reader.Read())
 2{
 3    switch(reader.NodeType)
 4    {
 5        case XmlNodeType.Element:   //当前节点是一个元素
 6              Console.Write("<" + reader.Name);
 7            while(reader.MoveToNextAttribute()) //按照顺序读取下一个属性
 8              Console.Write(" " + reader.Name + "=&#39;" + reader.Value + "&#39;");
 9            Console.Write(">");
10            break;
11        case XmlNodeType.DocumentType:  //XML文件的类型声明
12              Console.WriteLine(reader.NodeType + "<" + reader.Name + ">" + reader.Value);
13            break;
14        ……
15        }
16    }
Copy after login

Starting from line 3, we judge the type of node based on the NodeType attribute, and perform different processing according to different types of nodes.

The following table lists some commonly used node types.

## An attributeCDATAEscape text that would be treated as a markup language (such as HTML)Comment##Comments separated by DocumentDocumentType##ElementEndTagNone

##XmlTextReaderThe value of NodeType

Type

Description

All

All nodes

Attribute

The root node of the XML data tree

The type declaration of the document, that is, tag

An element, usually the actual data in the XML file

The end position of the element

## is not a node

Text
Returns the text content of the element

XMLDeclaration
XML declaration node, for example

在进行写入XML文件时我们使用的XmlTextWriter类,它是XmlWriter的子类,速度快且不使用缓存,但是同XmlTextReader一样,在写入XML文件时只能向前。

我们假定要写入的XML文件在C盘根目录下:

XmlTextWriter writer = new XmlTextWriter("C:\\sample2.xml",null);
Copy after login

在这里如果不想把数据写入文件,而只是想在命令窗口显示,则可以把“Console.Out”作为参数传递给构造器,此时应把上述语句改为:

XmlTextWriter writer = new XmlTextWriter(Console.Out);
Copy after login

下面我们介绍一下写入XML文件数据的一些常用方法:

XmlTextWriter的常用方法

方法

说明

用法

WriteStartDocument

写XML声明部分,即“

writer.WriteStartDocument();

WriteEndDocument

使没有闭合元素闭合

writer.WriteEndDocument();

WriteDocType

写DOCTYPE声明

writer.WriteDocType("sample2",null,null,"");

WriteStartElement

写元素的开始标志

writer.WriteStartElement("sample2");

WriteEndElement

写元素的结束标志

writer.WriteEndElement();

WriteString

写入字符串

writer.WriteString("Pride And Prejudice");

WriteCData

写CDATA块,即写入的文字在

writer.WriteCData("Price 15% off!!");

WriteRaw

手工写入一行,不作任何处理

writer.WriteRaw("this & that");

WriteEntityRef

写入实体引用,即前面加“&”后面加“;”

writer.WriteEntityRef("h");

WriteProcessingInstruction

写入处理指令,即前面加“

writer.WriteProcessingInstruction("xml-stylesheet",PItext);

WriteComment

写入注释,自动加入注释标志“