ホームページ  >  記事  >  バックエンド開発  >  XML ファイルの解釈と書き込みのための詳細なコード例

XML ファイルの解釈と書き込みのための詳細なコード例

黄舟
黄舟オリジナル
2017-03-23 16:41:562044ブラウズ

この記事では 3 つの側面について説明します:
1. XML ファイルにアクセスする
2. XML ドキュメント オブジェクト モデル
3. XML と DataSet

ここでは、XmlTextRead を操作する 2 つのオブジェクトをまず紹介します。 er と 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属性に基づいてノードの種類を判断し、ノードの種類に応じて異なる処理を行っています。

次の表に、一般的に使用されるノード タイプをいくつか示します。

All属性エスケープテキストマークアップ言語 (HTML など) として扱われます!—と --> を区切ったコメントルートノードXML データ ツリーの

NodeType/

すべてのノード

Attribute

CDATA

コメント

ドキュメント

DocumentType

ドキュメントの型宣言、つまり & lt;!DOCTYPE …>Tag

Element

要素、通常はXML ファイル内の実際のデータ

EndTag

要素の終了位置

なし

はノードではありません

テキスト

要素

XMLDeclaration

XML宣言ノードのテキストコンテンツを返します。例: 62c3ba9124db900fed3323e8c5000c92”

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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。