Cet article couvrira 3 aspects :
1. Accéder aux fichiers XML
2. Modèle d'objet de document XML
3. XML et DataSet
Ici, nous introduisons d'abord deux objets pour exploiter les fichiers XML : XmlTextReader et XmlTextWriter
L'objet utilisé pour ouvrir et lire les fichiers XML est l'objet XmlTextReader. L'exemple suivant ouvre un exemple de fichier sample.xml
XmlTextReader reader = new XmlTextReader("sample.xml");
dans le même chemin que le programme. Nous pouvons ensuite faciliter automatiquement le fichier XML via sa méthode Read. Exemple :
while(reader.Read())
{
//在这里填写对于XML的操作代码
}
Regardons un exemple plus compliqué.
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 }
À partir de la ligne 3, nous jugeons le type de nœud en fonction de l'attribut NodeType, et effectuons différents traitements en fonction des différents types de nœuds.
Le tableau suivant répertorie certains types de nœuds couramment utilisés.
XmlTextReaderLa valeur de NodeType
XmlTextReader的NodeType的取值 |
类型 |
说明 |
All |
所有节点 |
Attribute |
一个属性 |
CDATA |
转义那些会被看作标记语言(如HTML)的文本 |
Comment |
使用0d407f96973377b85c0b4bcf044949e0分隔的注释 |
Document |
XML数据树的根节点 |
DocumentType |
文档的类型声明,即1d4c3cf0a242d7a29a1ff1d6757e7409标记 |
Element |
一个元素,通常是XML文件中的实际数据 |
EndTag |
元素的结束位置 |
None |
不是节点 |
Text |
返回元素的文本内容 |
XMLDeclaration |
XML声明节点,例如c5d072e809e180400bb0f5d114c57633 séparés Commentaires |
Document |
Le nœud racine de l'arborescence de données XML |
DocumentType | La déclaration de type du document, c'est-à-dire la balise 1d4c3cf0a242d7a29a1ff1d6757e7409 |
Élément |
Un élément, généralement les données réelles dans le fichier XML |
EndTagLa position finale de l'élément |
AucunPas un nœud |
Texte |
Renvoie le contenu textuel de l'élément |
XMLDeclaration |
Nœud de déclaration XML, tel que 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='text/xsl' href='book.xsl'";
22 writer.WriteProcessingInstruction("xml-stylesheet", PItext);
23
24 //Write the DocumentType node
25 writer.WriteDocType("book", null , null, "<!ENTITY h 'hardcover'>");
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'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} |
|
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!
Déclaration:Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn