0

我有这个 xml 文件: http: //www.studiovincent.net/list.xml

我需要使用 c# 的解析器来获取值。我使用这段代码:

XmlReader xmlReader = XmlReader.Create("http://www.studiovincent.net/list.xml");
        while (xmlReader.Read())
        {
            if ((xmlReader.NodeType == XmlNodeType.Element) && (xmlReader.Name == "field"))
            {
                if (xmlReader.HasAttributes)
                    Console.WriteLine(xmlReader.GetAttribute("name") + ": " + xmlReader.GetAttribute("price"));
            }
        }
        Console.ReadKey();

但我得到了 OUTPUT 这个结果:

name:
username:
age:
hair:
name:
username:
age:
hair:
name:
username:
age:
hair:

我怎样才能得到这个结果?

Vincent
Hill
31
black
John
Tedelon
27
brown
Michael
Lopez
20
red
Frank
Lopez
25
black

这个结果呢?

 Vincent
 John
 Michael
 Frank

提前致谢!

4

3 回答 3

3

以下代码将为您提供第一个结果:

        using System.Xml;
        using.System.Xml.Linq;

        XmlReader reader = XmlReader.Create("http://www.studiovincent.net/list.xml");
        XElement el = XElement.Load(reader);
        reader.Close();

        var items = el.Elements("resources").Elements("resource").Descendants().DescendantNodes();

        foreach (XNode node in items)
        {
            Console.WriteLine(node.ToString());
        }

下面的代码会给你,你的第二个结果

        var items = from item in el.Elements("resources").Elements("resource").Descendants() where item.Attribute("name").Value == "name" select item.FirstNode;

        foreach (XNode node in items)
        {
            Console.WriteLine(node.ToString());
        }
于 2013-01-22T18:49:27.220 回答
1

前两行将帮助您:

using System.Xml.Linq;
var doc = XDocument.Load("http://www.studiovincent.net/list.xml");
var people = doc.Descendants("resource");

这个库叫做Linq for XML

于 2013-01-22T18:30:35.057 回答
0

您可以使用

string URL = "http://www.studiovincent.net/list.xml";
XDocument doc = XDocument.Load(URL);

//To read an element you use
 List<XElement> myElements = doc.Element("list").Element("resources").Elements("resource").Elements("field").ToList();

        foreach (XElement element in myElements)
        {

            Console.WriteLine("{0} : {1}", element.Attribute("name").Value, element.Value);


        } 
于 2013-01-22T18:31:27.347 回答