HIRO's.NET

VB.NET, C#, PowerShell Tipsサイト

 VB.NET, C#, PowerShellを使用しているエンジニアのためのサイト。

 基本的な使用方法から開発で役立つTipsまで幅広く取り扱っています。

HIRO's.NET RSSHIRO's.NET RSS


C# 2005の開発でお困りのことはありませんか?
そんな悩みは当サイトで解決!!

HOME > C# 2005 Tips > XML Tips メニュー> DOM Tips メニュー

16.ノードの型を取得する

UPDATE:2006/07/30 

<< 前のTips  次のTips >>

 


 ノードの型を取得するには、NodeTypeプロパティを使用します。サンプルでは、ノードの型がコメントの場合に「このノードはコメントです」と表示をします。
 参考としてXmlNodeTypeのメンバ一覧を載せておきます。

メンバ名 説明
Attribute 属性 (例 : id='123')。 

Attribute ノードには、Text および EntityReference の 2 つの子ノード型を含めることができます。Attribute ノードは、他のノード型の子ノードになることはありません。このノードは、Element の子ノードとは見なされません。

CDATA CDATA セクション (例 : <![CDATA[my escaped text]]>)。 

CDATA セクションは、通常はマークアップとして認識されるテキスト ブロックをエスケープするために使用されます。CDATA ノードには、子ノードを含めることができません。このノードは、DocumentFragmentEntityReference、Element の各ノードの子にすることができます。

Comment コメント (例 : <!-- my comment -->)。 

Comment ノードには、子ノードを含めることができません。このノードは、Document、DocumentFragment、Element、EntityReference の各ノードの子にすることができます。

Document ドキュメント ツリーのルートして、XML ドキュメント全体へのアクセスを実現するドキュメント オブジェクト。 

Document ノードには、XmlDeclaration、Element (最大 1 つ)、ProcessingInstruction、Comment、DocumentType の各子ノード型を含めることができます。このノードは、任意のノード型の子になることはありません。

DocumentFragment ドキュメント フラグメント。 

DocumentFragment ノードは、実際にドキュメントに含まれることはなく、ドキュメントにノードまたはサブツリーを関連付けます。DocumentFragment ノードには、Element、ProcessingInstruction、Comment、Text、CDATAEntityReference の各子ノード型を含めることができます。このノードは、任意のノード型の子になることはありません。

DocumentType 次のようなタグで示されるドキュメント型宣言 (例 : <!DOCTYPE...>)。 

DocumentType ノードには、Notation および Entity の 2 つの子ノード型を含めることができます。このノードは、Document ノードの子にすることができます。

Element 要素 (例 : <item>)。 

Element ノードには、Element、Text、Comment、ProcessingInstructionCDATAEntityReference の各子ノード型を含めることができます。このノードは、Document、DocumentFragment、Element、EntityReference の各ノードの子にすることができます。

EndElement 終了要素タグ (例 : </item>)。 

XmlReader が要素の末尾に達したときに EndElement ノードが返されます。

EndEntity ResolveEntity を呼び出した結果、XmlReader がエンティティ置換の末尾に到達したときに返されます。 
Entity エンティティ宣言 (例 : <!ENTITY...>)。 

Entity ノードには、展開されたエンティティを表す子ノード (Text ノードや EntityReference ノードなど) を含めることができます。このノードは、DocumentType ノードの子にすることができます。

EntityReference エンティティへの参照 (例 : &num;)。 

EntityReference ノードには、ElementProcessingInstructionCommentTextCDATA、および EntityReference の各子ノード型を含めることができます。このノードは、AttributeDocumentFragmentElement、および EntityReference の各ノードの子にすることができます。

None Read メソッドが呼び出されなかった場合に、XmlReader によって返されます。 
Notation ドキュメント型宣言内の表記 (例 : <!NOTATION...>)。 

Notation ノードには、子ノードを含めることができません。このノードは、DocumentType ノードの子にすることができます。

ProcessingInstruction 処理命令 (例 : <?pi test?>)。 

ProcessingInstruction ノードには、子ノードを含めることができません。このノードは、Document、DocumentFragment、Element、EntityReference の各ノードの子にすることができます。

SignificantWhitespace 混合コンテンツ モデル内のマークアップ間にある空白、または xml:space="preserve" スコープ内の空白。 
Text ノードのテキストの内容。 

Text ノードには、子ノードを含めることができません。このノードは、Attribute、DocumentFragment、Element、EntityReference の各ノードの子にすることができます。

Whitespace マークアップ間の空白。 
XmlDeclaration XML 宣言 (例 : <?xml version='1.0'?>)。 

XmlDeclaration ノードは、ドキュメント内の最初のノードにする必要があります。このノードには、子を含めることができません。このノードは、Document ノードの子になります。このノードには、バージョン情報およびエンコーディング情報を提供する属性を含めることができます。

 
サンプル
System.Xml.XmlDocument xmlDoc = new System.Xml.XmlDocument();

// XMLファイルを読み込む
xmlDoc.Load(@"C:\Work\Test.xml");

//ルート要素を取得する
System.Xml.XmlElement rootElement = xmlDoc.DocumentElement;

foreach ( System.Xml.XmlNode child in rootElement.ChildNodes )
{
    //コメントかどうかを確認する
    if ( child.NodeType == System.Xml.XmlNodeType.Comment )
        Console.WriteLine("このノードはコメントです");
}