>  기사  >  백엔드 개발  >  XML 파일 해석 및 작성을 위한 자세한 코드 예제

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

黄舟
黄舟원래의
2017-03-23 16:41:562098검색

이 기사에서는 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 속성을 기반으로 노드 유형을 판단하고, 노드 유형에 따라 다른 처리를 수행합니다.

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

XmlTextReaderNodeType 값

EndTag없음

XmlTextReader的NodeType的取值

类型

说明

All

所有节点

Attribute

一个属性

CDATA

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

Comment

使用0d407f96973377b85c0b4bcf044949e0分隔的注释

Document

XML数据树的根节点

DocumentType

文档的类型声明,即1d4c3cf0a242d7a29a1ff1d6757e7409标记

Element

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

EndTag

元素的结束位置

None

不是节点

Text

返回元素的文本内容

XMLDeclaration

XML声明节点,例如47e42bac2cf56adb0ba762209931b5ea를 구분하여 사용하세요. 댓글

문서 XML 데이터 트리의 루트 노드
DocumentType 문서의 유형 선언, 즉 1d4c3cf0a242d7a29a1ff1d6757e7409
요소 요소, 일반적으로 XML 파일의 실제 데이터
요소의 끝 위치
노드 아님
텍스트 요소의 텍스트 내용을 반환합니다
XMLDeclaration XML 선언 노드(예: a002b45a997b7c6d043f2f4a13f0625f”

writer.WriteStartDocument();

WriteEndDocument

使没有闭合元素闭合

writer.WriteEndDocument();

WriteDocType

写DOCTYPE声明

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

WriteStartElement

写元素的开始标志

writer.WriteStartElement("sample2");

WriteEndElement

写元素的结束标志

writer.WriteEndElement();

WriteString

写入字符串

writer.WriteString("Pride And Prejudice");

WriteCData

写CDATA块,即写入的文字在2963dcafef8686bc91e578183ecdbb7f间

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

WriteRaw

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

writer.WriteRaw("this & that");

WriteEntityRef

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

writer.WriteEntityRef("h");

WriteProcessingInstruction

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

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

WriteComment

写入注释,自动加入注释标志“29c34bdaf61639ad2e7e72dc03a6dddf”转化为“&”、“<”和“>”。

        2.ASCII码为0~(十六进制)的字符转化为“&#~“&#”。

        3.如果是在写属性的值则双引号“””转化为“"”;单引号 “’”转化为“'”。

        下面给大家写出一个例程,由于注释比较详细就不作过多解释了。

using System;
 2using System.IO;
 3using System.Xml;
 4
 5public class Sample
 6{
 7    private const string filename = "sampledata.xml";
 8
 9    public static void Main()
10    {
11        XmlTextWriter writer = null;
12
13        writer = new XmlTextWriter (filename, null);
14        //为使文件易读,使用缩进
15        writer.Formatting = Formatting.Indented;
16
17        //写XML声明
18        writer.WriteStartDocument();
19
20        //引用样式
21        String PItext="type=&#39;text/xsl&#39; href=&#39;book.xsl&#39;";
22        writer.WriteProcessingInstruction("xml-stylesheet", PItext);
23
24        //Write the DocumentType node
25        writer.WriteDocType("book", null , null, "<!ENTITY h &#39;hardcover&#39;>");
26        
27        //写入注释
28        writer.WriteComment("sample XML");
29    
30        //写一个元素(根元素)
31        writer.WriteStartElement("book");
32
33        // genre 属性
34        writer.WriteAttributeString("genre", "novel");
35    
36        // ISBN 属性
37        writer.WriteAttributeString("ISBN", "1-8630-014");
38
39        //书名元素
40        writer.WriteElementString("title", "The Handmaid&#39;s Tale");
41              
42        //Write the style element
43        writer.WriteStartElement("style");
44        writer.WriteEntityRef("h");
45        writer.WriteEndElement(); 
46
47        //价格元素
48        writer.WriteElementString("price", "19.95");
49
50        //写入 CDATA
51        writer.WriteCData("Prices 15% off!!");
52
53        //关闭根元素
54        writer.WriteEndElement();
55             
56        writer.WriteEndDocument();
57
58        //缓冲器内的内容写入文件
59        writer.Flush();
60        writer.Close();  
61
62        
63        XmlDocument doc = new XmlDocument();
64        
65        doc.PreserveWhitespace = true;
66        //加载文件
67        doc.Load(filename);  
68    
69        //XML文件的内容显示在控制台
70        Console.Write(doc.InnerXml);  
71        //等待用户阅读
72        Console.In.Read();
73    }
74}

위 내용은 XML 파일 해석 및 작성을 위한 자세한 코드 예제의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.