我无法从xml获取属性值。我使用的是Google Custom Search API。
var results =
(from r in res.Descendants("R")
where r.Element("T") != null
select new GoogleSearchResultItem(
new PageSummary
{
Title = r.Element("T").Value,
LinkURL = r.Element("U").Value,
Description = r.Element("S").Value
}));
它适用于T,U,S元素,但是当我尝试获取属性programid时,我得到null。
这是XML:
<R N="1">
<U>
Link to somepage
</U>
<T>
<b>Title</b>
</T>
<S>
Summary
</S>
<LANG>sv</LANG>
<Label>_cse_1h5bojdlb5c</Label>
<PageMap>
<DataObject type="metatags">
<Attribute name="displaydate" value="20121028"/>
<Attribute name="programid" value="2519"/>
<Attribute name="formatid" value="116"/>
</DataObject>
</PageMap>
答案 0 :(得分:1)
我在这里使用了匿名类型但没有什么能阻止你强烈输入它。
var res = XDocument.Load(@"c:\temp\test.xml");
var results = res.Descendants("R").Where(r => r.Element("T") != null)
.Select(r => new
{
Title = r.Element("T").Value,
LinkUrl = r.Element("U").Value,
Description = r.Element("S").Value,
ProgramId = r.Descendants("Attribute").Where(x=>x.Attribute("name").Value == "programid").Select(x=>x.Attribute("value").Value).FirstOrDefault()
}).ToList();
这里是强类型
var res = XDocument.Load(@"c:\temp\test.xml");
var results = res.Descendants("R").Where(r => r.Element("T") != null)
.Select(r => new GoogleSearchResultItem
{
PageSummary = new PageSummary
{
Title = r.Element("T").Value,
LinkUrl = r.Element("U").Value,
Description = r.Element("S").Value,
ProgramId = r.Descendants("Attribute").Where(x => x.Attribute("name").Value == "programid").Select(x => x.Attribute("value").Value).FirstOrDefault()
}
});