查询XElement中的特定元素

时间:2013-01-24 00:38:07

标签: xelement

我有这个代码,我正在尝试调整以获取消息元素:

    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>
                    <code>400</code>
                    <message>Attribute weight is not applicable for product type Configurable Product</message>
                  </data_item>
                  <data_item>
                    <code>400</code>
                    <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);
    }

我想得到以下结果:

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

我是整个查询XElement的新手,所以感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

您应该使用以下内容:

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

另外,我建议执行以下内容:

foreach (var descendant in doc.Descendants())
{
    Console.WriteLine(descendant);
}

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