2013-05-18 127 views
0

XML获取XML元素通过ID在C#

<?xml version="1.0" encoding="utf-8" ?> 
<animals> 
    <animal id="fisrt"> 
     <type>Dog</type> 
     <name>Han</name> 
    </animal> 
    <animal id="second"> 
     <type>Cat</type> 
     <name>Leia</name> 
    </animal> 
</animals> 

C#

using System.Xml.Linq; 

string id = "second"; 
var filter = from ab in element.Elements("animal") where ab.Attribute("id").Equals(id) select ab; 
foreach (XElement selector in filter) 
{ 
    label1.Content = selector.Element("name").Value; 
} 

我需要选择是基于父元素的id元素帮助。目标是选择姓名的父母的ID是“第二”,所以我试图得到“Leia”。我遇到的问题是标签没有任何事情发生。

我在做什么错,我该如何解决这个问题。如果有人知道实现我的目标的更好方法,我也会采取不同的方法。

+1

'ab.Attribute(“id”).Value.Equals(id)'是你正在寻找的。 –

回答

0

你错过检查属性的值:

where ab.Attribute("id").Value.Equals(id) 

希望这有助于!

+0

就是这样。非常感谢你T-moty。 – user2395842

-1

如何:

string name = xdoc.Elements("animal") 
    .Where (e=>e.Attribute("id")=="first") 
    .Elements("name") 
    .Select(e=>e.Value) 
    .FirstOrDefault(); 

基本上你想放的条件有关id属性where内,继续查询。

我知道这是方法注解而不是linq语法,我更喜欢它在事情变得多毛时更容易阅读。