HIRO's.NET

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

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

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

HIRO's.NET RSSHIRO's.NET RSS


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

HOME > VB.NET 2005 Tips > XML Tips メニュー> XmlReader Tips メニュー

05.XMLファイル読み取りサンプル

UPDATE:2006/08/04 

<< 前のTips  次のTips >>

 


 XMLファイル読み取りサンプルを紹介します。NodeTypeを使用して各種データを取得しています。

メンバ名 説明
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 ノードの子になります。このノードには、バージョン情報およびエンコーディング情報を提供する属性を含めることができます。

 
サンプル1
Dim reader As System.Xml.XmlReader = System.Xml.XmlReader.Create("C:\Work\Test.xml")

While reader.Read
    Select Case reader.NodeType
        Case Xml.XmlNodeType.Element
            Console.WriteLine("<{0}>", reader.Name)
        Case Xml.XmlNodeType.Text
            Console.WriteLine(reader.Value)
        Case Xml.XmlNodeType.CDATA
            Console.WriteLine("<![CDATA[{0}]]>", reader.Value)
        Case Xml.XmlNodeType.ProcessingInstruction
            Console.WriteLine("<?{0} {1}?>", reader.Name, reader.Value)
        Case Xml.XmlNodeType.Comment
            Console.WriteLine("<!--{0}-->", reader.Value)
        Case Xml.XmlNodeType.XmlDeclaration
            Console.WriteLine("<?xml version='1.0'?>")
        Case Xml.XmlNodeType.Document
        Case Xml.XmlNodeType.DocumentType
            Console.WriteLine("<!DOCTYPE {0} [{1}]", reader.Name, reader.Value)
        Case Xml.XmlNodeType.EntityReference
            Console.WriteLine(reader.Name)
        Case Xml.XmlNodeType.EndElement
            Console.WriteLine("</{0}>", reader.Name)
    End Select
End While

'リーダーを閉じる
reader.Close()


 
サンプル2
'サンプルXMLファイル
<?xml version="1.0" encoding="utf-8"?>
<!--アドレスリスト-->
<Address_Lists>
    <AddressList ID="111">
        <ZIP_CODE>123-4567</ZIP_CODE>
        <ADDRESS>東京都渋谷区</ADDRESS>
    </AddressList>
    <AddressList ID="222">
        <ZIP_CODE>333-7777</ZIP_CODE>
        <ADDRESS>北海道苫小牧市</ADDRESS>
    </AddressList>
    <AddressList ID="333">
        <ZIP_CODE>111-2222</ZIP_CODE>
        <ADDRESS>茨城県水戸市</ADDRESS>
    </AddressList>
</Address_Lists>