查询 XElement 中的特定元素

Query specific element in XElement

我有这段代码,我正试图调整它以只取回消息元素:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
    public static void Main(string[] args)
    {

        Console.WriteLine("Querying tree loaded with XElement.Load");
        Console.WriteLine("----");
        XElement doc = XElement.Parse(@"<magento_api>
              <messages>
                <error>
                  <data_item>
                    <wyn>400</wyn>
                    <message>Attribute weight is not applicable for product type Configurable Product</message>
                  </data_item>
                  <data_item>
                    <wyn>400</wyn>
                    <message>Resource data pre-validation error.</message>
                  </data_item>
                </error>
              </messages>
            </magento_api>");
        IEnumerable<XElement> childList =
            from el in doc.Elements()
            select el;
        foreach (XElement e in childList)
            Console.WriteLine(e);
    }

我想得到以下结果:

1
2
<message>Attribute weight is not applicable for product type Configurable Product</message>
<message>Resource data pre-validation error.</message>

我是整个查询 XElement 的新手,因此感谢您提供任何帮助。


您应该使用以下内容:

1
2
3
4
foreach (var descendant in doc.Descendants().Where(x => x.Name =="message"))
{
    Console.WriteLine(descendant);
}

另外,我建议执行以下操作:

1
2
3
4
foreach (var descendant in doc.Descendants())
{
    Console.WriteLine(descendant);
}

为了更好地理解 XElement 的工作原理。