C#在某个节点内读取xml

时间:2017-05-03 17:38:33

标签: c# xml

我需要帮助。我试图找出一种方法来阅读像这样的支架:



<group id = "56"> 
<name>Counter</name> 
</group>
&#13;
&#13;
&#13;

在代码中,有多个地方有相同的模式回来,我想得到所有的组ID号及其名称。

这是我的代码:

        XDocument doc = XDocument.Parse(_XmlFile);
        var results = doc.Descendants("group").Select(x => new
        {
            id = (int)x.Attribute("id"),
            name = x.Attribute("name").Value,
        }).ToList();

        Console.WriteLine(results);

由于

3 个答案:

答案 0 :(得分:1)

您的代码看起来很不错,但name是一个元素,而不是一个属性,所以它应该是

XDocument doc = XDocument.Parse(_XmlFile);
var results = doc.Descendants("group").Select(x => new
{
    id = (int)x.Attribute("id"),
    name = (string)x.Element("name"),
}).ToList();

foreach (var x in results)
    Console.WriteLine("id: {0}   name: {1}", x.id, x.name);

答案 1 :(得分:0)

使用GetElementsByTagName方法。

以下是使用示例解释它的微软文章。 https://msdn.microsoft.com/en-us/library/dc0c9ekk(v=vs.110).aspx

答案 2 :(得分:0)

“名称”不是属性,而是子节点。解决方案是这样的:

XDocument doc = XDocument.Parse(_XmlFile);
var results = doc.Descendants("group").Select(x => new
{
    id = int.Parse(x.Attribute("id").Value),
    name = x.Descendants("name").First().Value
}).ToList();