Detaillierte Codebeispiele zum Interpretieren und Schreiben von XML-Dateien

黄舟
Freigeben: 2017-03-23 16:41:56
Original
2115 Leute haben es durchsucht

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");
Nach dem Login kopieren

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

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

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    }
Nach dem Login kopieren

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.

< td width="276">

Beschreibung<🎜>

< td width=" 144"><🎜>EndTag<🎜>< td width="144" ><🎜>Keine<🎜>

XmlTextReaderDer Wert von NodeType

XmlTextReader的NodeType的取值

类型

说明

All

所有节点

Attribute

一个属性

CDATA

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

Comment

使用分隔的注释

Document

XML数据树的根节点

DocumentType

文档的类型声明,即标记

Element

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

EndTag

元素的结束位置

None

不是节点

Text

返回元素的文本内容

XMLDeclaration

XML声明节点,例如

Typ<🎜>

<🎜>Alle<🎜><🎜>Alle Knoten<🎜>
<🎜> Attribut <🎜><🎜>Ein Attribut<🎜>
<🎜>CDATA<🎜> < /td><🎜>Escape-Text, der als Auszeichnungssprache (z. B. HTML) angesehen wird<🎜>
<🎜>Kommentar<🎜><🎜>Verwenden Sie getrennt Kommentare<🎜>
<🎜>Dokument<🎜><🎜>Der Wurzelknoten des XML-Datenbaums<🎜>
<🎜>DocumentType<🎜> <🎜>Die Typdeklaration des Dokuments, also das -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.

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

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

XmlTextWriter writer = new XmlTextWriter("C:\\sample2.xml",null);
Nach dem Login kopieren

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

XmlTextWriter writer = new XmlTextWriter(Console.Out);
Nach dem Login kopieren

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

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