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();

しかし、私はこの結果を出力します:

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());
        }

次のコードは、2 番目の結果を提供します。

        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

これらの最初の 2 行が役立ちます。

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 に答える