2013-01-24 35 views
1
查询特定元素

我有这样的代码,我试图调整找回刚才的消息元素:中的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

你应该使用下列内容:

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

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

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

为了更好地理解的XElement是如何工作的。

+0

谢谢你的第二个例子。这绝对有助于更多。 – jared