在C#中处理复杂类型的xml-reader

R3turnz

例如,我有以下XML:我想用XML-Reader读取Sender对象:

<gesmes:Sender>
<gesmes:name>European Central Bank</gesmes:name>
</gesmes:Sender>

我写了以下解析器:

 using (var reader = XmlReader.Create(new FileStream(Console.ReadLine(), FileMode.Open, FileAccess.ReadWrite, FileShare.Read)))
        {
            while (reader.Read())
            {
                if (reader.NodeType == XmlNodeType.Element)
                {
                    switch (reader.LocalName)
                    {
                        case "Sender":
                            do
                            {
                                reader.Read();
                            } while (reader.LocalName != "name");
                            Console.WriteLine("Sended from:" + reader.ReadElementContentAsString());
                            break;
                    }
                }
            }
        }

这不是很优雅,Xml阅读器是否还有另一种方法,或者这是唯一的方法吗?

R3turnz

杰登

这是最好的方法。始终工作无误。使用XmlReader和xml Linq。

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

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            using (var reader = XmlReader.Create(new FileStream(Console.ReadLine(), FileMode.Open, FileAccess.ReadWrite, FileShare.Read)))
            {
                while (!reader.EOF)
                {
                    if (reader.Name != "name")
                    {
                        reader.ReadToFollowing("name");
                    }
                    if(!reader.EOF)
                    {
                        XElement name = (XElement)XElement.ReadFrom(reader);
                    }
                }
            }
        }
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章