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 + "='" + 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 }
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
| |||||||||||||||||||||||||||
Typ<🎜> | < td width="276">|||||||||||||||||||||||||||
<🎜>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);
在这里如果不想把数据写入文件,而只是想在命令窗口显示,则可以把“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 | 写入注释,自动加入注释标志“ |