かずきのBlog@hatena

日本マイクロソフトに勤めています。XAML + C#の組み合わせをメインに、たまにASP.NETやJavaなどの.NET系以外のことも書いています。掲載内容は個人の見解であり、所属する企業を代表するものではありません。

XmlTextReaderの使い方の確認

プログラム

using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;

namespace XmlTest
{
    class Program
    {
        static void Main(string[] args)
        {
            XmlTextReader xr = new XmlTextReader("input.xml");
            while (xr.Read())
            {
                Print(xr);
            }
        }

        private static void Print(XmlReader xr)
        {
            if (xr.NodeType == XmlNodeType.Whitespace)
            {
                return;
            }

            Console.WriteLine(
                "NodeType = {0}, Name = {1}, Value = {2}", 
                xr.NodeType, xr.Name, xr.Value);

            if (xr.NodeType == XmlNodeType.Element)
            {
                if (xr.HasAttributes)
                {
                    Console.WriteLine("Attributeもち");
                    while(xr.MoveToNextAttribute())
                    {
                        Console.WriteLine("{0} = {1}", xr.Name, xr.Value);
                    }
                }
            }
        }
    }
}

input.xml

<?xml version="1.0" encoding="utf-8" ?>

<document name="テストドキュメント" version="1.0">
    <head>
        <author>私です</author>
        <date>2006/08/23</date>
    </head>
    <body>本文です</body>
</document>

出力結果

NodeType = XmlDeclaration, Name = xml, Value = version="1.0" encoding="utf-8"
NodeType = Element, Name = document, Value =
Attributeもち
name = テストドキュメント
version = 1.0
NodeType = Element, Name = head, Value =
NodeType = Element, Name = author, Value =
NodeType = Text, Name = , Value = 私です
NodeType = EndElement, Name = author, Value =
NodeType = Element, Name = date, Value =
NodeType = Text, Name = , Value = 2006/08/23
NodeType = EndElement, Name = date, Value =
NodeType = EndElement, Name = head, Value =
NodeType = Element, Name = body, Value =
NodeType = Text, Name = , Value = 本文です
NodeType = EndElement, Name = body, Value =
NodeType = EndElement, Name = document, Value =

うし!確認完了!
使うことは無いだろうけど…