XML 파일 해석 및 작성을 위한 자세한 코드 예제

黄舟
풀어 주다: 2017-03-23 16:41:56
원래의
2101명이 탐색했습니다.

이 기사에서는 3가지 측면을 다룹니다.
1. XML 파일에 액세스
2. XML 문서 개체 모델
3. XML 및 DataSet

여기서는 먼저 XML 파일을 작동하는 두 가지 개체인 XmlTextReader와 XmlTextWriter를 소개합니다.
Xml 파일을 열고 읽는 데 사용되는 개체는 XmlTextReader 개체입니다. 다음 예에서는 프로그램과 동일한 경로에 있는 샘플 파일 Sample.xml

XmlTextReader reader = new XmlTextReader("sample.xml");
로그인 후 복사

을 엽니다. 그런 다음 Read 메서드를 통해 XML 파일을 자동으로 활용할 수 있습니다. 예:

while(reader.Read())
{
       //在这里填写对于XML的操作代码
}
로그인 후 복사

이제 좀 더 복잡한 예를 살펴보겠습니다.

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    }
로그인 후 복사

3행부터 NodeType 속성을 기반으로 노드 유형을 판단하고, 노드 유형에 따라 다른 처리를 수행합니다.

다음 표에는 일반적으로 사용되는 노드 유형이 나열되어 있습니다.

< td width="276">

설명<🎜>

< td width=" 144"><🎜>EndTag<🎜>< td width="144" ><🎜>없음<🎜>

XmlTextReaderNodeType 값

XmlTextReader的NodeType的取值

类型

说明

All

所有节点

Attribute

一个属性

CDATA

转义那些会被看作标记语言(如HTML)的文本

Comment

使用分隔的注释

Document

XML数据树的根节点

DocumentType

文档的类型声明,即标记

Element

一个元素,通常是XML文件中的实际数据

EndTag

元素的结束位置

None

不是节点

Text

返回元素的文本内容

XMLDeclaration

XML声明节点,例如

유형<🎜>

<🎜>모든<🎜><🎜>모든 노드<🎜>
<🎜> 속성 <🎜><🎜>속성<🎜>
<🎜>CDATA<🎜> < /td><🎜>마크업 언어(예: HTML)로 표시되는 이스케이프 텍스트<🎜>
<🎜>댓글<🎜><🎜>를 구분하여 사용하세요. 댓글<🎜>
<🎜>문서<🎜><🎜>XML 데이터 트리의 루트 노드<🎜>
<🎜>DocumentType<🎜> <🎜>문서의 유형 선언, 즉
<🎜 >요소<🎜><🎜>요소, 일반적으로 XML 파일의 실제 데이터<🎜>
<🎜>요소의 끝 위치<🎜>
<🎜>노드 아님<🎜>
<🎜> 텍스트<🎜><🎜>요소의 텍스트 내용을 반환합니다<🎜>
<🎜>XMLDeclaration <🎜><🎜>XML 선언 노드(예:

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

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

XmlTextWriter writer = new XmlTextWriter("C:\\sample2.xml",null);
로그인 후 복사

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

XmlTextWriter writer = new XmlTextWriter(Console.Out);
로그인 후 복사

下面我们介绍一下写入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

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