Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Codebeispiele zum Interpretieren und Schreiben von XML-Dateien

Detaillierte Codebeispiele zum Interpretieren und Schreiben von XML-Dateien

黄舟
黄舟Original
2017-03-23 16:41:562045Durchsuche

Dieser Artikel behandelt drei Aspekte:
1. Auf XML-Dateien zugreifen
2. XML-Dokumentobjektmodell
3. XML und DataSet

Hier stellen wir zunächst zwei Objekte zum Betreiben von XML-Dateien vor: XmlTextReader und XmlTextWriter
Das zum Öffnen und Lesen von XML-Dateien verwendete Objekt ist das XmlTextReader-Objekt. Das folgende Beispiel öffnet eine Beispieldatei sample.xml

XmlTextReader reader = new XmlTextReader("sample.xml");

im selben Pfad wie das Programm. Dann können wir die XML-Datei automatisch über ihre Read-Methode erleichtern. Beispiel:

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

Schauen wir uns ein komplizierteres Beispiel an.

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    }

Ab Zeile 3 beurteilen wir den Knotentyp anhand des NodeType-Attributs und führen je nach Knotentyp unterschiedliche Verarbeitungen durch.

In der folgenden Tabelle sind einige häufig verwendete Knotentypen aufgeführt.

XmlTextReaderDer Wert von NodeType

EndTagKeine

XmlTextReader的NodeType的取值

类型

说明

All

所有节点

Attribute

一个属性

CDATA

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

Comment

使用0d407f96973377b85c0b4bcf044949e0分隔的注释

Document

XML数据树的根节点

DocumentType

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

Element

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

EndTag

元素的结束位置

None

不是节点

Text

返回元素的文本内容

XMLDeclaration

XML声明节点,例如bef4dce7a8fa0b62421b8302041c4728 getrennt Kommentare

Dokument Der Wurzelknoten des XML-Datenbaums
DocumentType Die Typdeklaration des Dokuments, also das 1d4c3cf0a242d7a29a1ff1d6757e7409-Tag
Element Ein Element, normalerweise die tatsächlichen Daten in der XML-Datei
Die Endposition des Elements
Kein Knoten
Text Gibt den Textinhalt des Elements zurück
XMLDeclaration XML-Deklarationsknoten, z. B. a9e88ac467c7eca9b794813808e99258”

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}

Das obige ist der detaillierte Inhalt vonDetaillierte Codebeispiele zum Interpretieren und Schreiben von XML-Dateien. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn