C#XDocument从XML-File

时间:2017-04-04 09:36:31

标签: c# xml

我有一个像这样的XML文件:

<Inventory>
<Item>
<Name>Super Mario Bros</Name>
<Count>14</Count>
<Price>29,99</Price>
<Comment><No Comments on this Product></Comment>
<Artist>N/A</Artist>
<Publisher>Nintendo</Publisher>
<Genre>Video Games</Genre>
<Year>1985</Year>
<ProductID>001</ProductID>
</Item>
<Item>
<Name>The Legend of Zelda</Name>
<Count>12</Count>
<Price>34,99</Price>
<Comment><No Comments on this Product></Comment>
<Artist>N/A</Artist>
<Publisher>Nintendo</Publisher>
<Genre>Video Games</Genre>
<Year>1986</Year>
<ProductID>002</ProductID>
</Item>
<Item>
<Name>Street Fighter</Name>
<Count>82</Count>
<Price>19,99</Price>
<Comment><No Comments on this Product></Comment>
<Artist>N/A</Artist>
<Publisher>Nintendo</Publisher>
<Genre>Video Games</Genre>
<Year>1987</Year>
<ProductID>003</ProductID>
</Item>
</Inventory>

(还有更多项目,但它们都是相同的,除了值。)

现在我想迭代每个Item并从每个节点中提取每个值。这是我到目前为止所尝试的内容:

        var xDocument = XDocument.Load(FilePath_CSVToXML);
        string xml = xDocument.ToString();
        StringBuilder sb = new StringBuilder();

        foreach (XElement xe in xDocument.Descendants("Inventory")) {
            sb.Append(xe);
        }

        Console.WriteLine(sb.ToString());
        Console.ReadLine();

上面的代码正确显示了XML文件,但它保留了节点。 (名称,计数,价格等)我只想要这些值。

2 个答案:

答案 0 :(得分:1)

您需要使用Value属性,即sb.Append(xe.Value)

答案 1 :(得分:0)

请尝试以下代码。注释的内容不需要尖括号,因此请删除。

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


namespace ConsoleApplication49
{

    class Program
    {
        const string FILENAME = @"c:\temp\test.xml";
        static void Main(string[] args)
        {
            XDocument doc = XDocument.Load(FILENAME);
            var results = doc.Descendants("Item").Select(x => new {
                name = (string)x.Element("Name"),
                count = (int)x.Element("Count"),
                price = (decimal)x.Element("Price"),
                comment = (string)x.Element("Comment"),
                artist = (string)x.Element("Artist"),
                publisher = (string)x.Element("Publisher"),
                genre = (string)x.Element("Genre"),
                year = (int)x.Element("Year"),
                productID = (string)x.Element("ProductID")
            }).ToList();

        }
    }


}