ホームページ > バックエンド開発 > XML/RSS チュートリアル > XML ファイルの解釈と書き込みのための詳細なコード例

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

黄舟
リリース: 2017-03-23 16:41:56
オリジナル
2140 人が閲覧しました

この記事では 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宣言ノードのテキストコンテンツを返します。例:

在进行写入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

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