かずきのBlog@hatena

すきな言語は C# + XAML の組み合わせ。Azure Functions も好き。最近は Go 言語勉強中。日本マイクロソフトで働いていますが、ここに書いていることは個人的なメモなので会社の公式見解ではありません。

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 =

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