이 기사에서는 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 + "='" + reader.Value + "'"); 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 속성을 기반으로 노드 유형을 판단하고, 노드 유형에 따라 다른 처리를 수행합니다.
다음 표에는 일반적으로 사용되는 노드 유형이 나열되어 있습니다.
XmlTextReaderNodeType 값
| |||||||||||||||||||||||||||
유형<🎜> | < td width="276">|||||||||||||||||||||||||||
<🎜>모든<🎜> | <🎜>모든 노드<🎜> | ||||||||||||||||||||||||||
<🎜> 속성 <🎜> | <🎜>속성<🎜> | ||||||||||||||||||||||||||
<🎜>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 | 写入注释,自动加入注释标志“ |