我需要解析这个 xml 文档(仅部分):
<channel>
<item>
<title>a</title>
<description>aa</description>
<link url= "www.a.com" />
</item>
<item>
<title>b</title>
<description>bb</description>
<link url= "www.b.com" />
</item>
<item>
<title>c</title>
<description>cc</description>
<link url= "www.c.com" />
</item>
<item>
<title>d</title>
<description>dd</description>
<channelContents>
<item>
<title>a</title>
<description>aa</description>
<link url= "www.a.com" />
</item>
<item>
<title>b</title>
<description>bb</description>
<link url= "www.b.com" />
</item>
<item>
<title>c</title>
<description>cc</description>
<link url= "www.c.com" />
</item>
</channelContents>
</item>
</channel>
这是我的代码:
List<ItemList> itemList = null;
reader = XmlReader.Create(new StringReader(content));
loadedData = XDocument.Load(reader);
var query = from i in loadedData.Descendants("item")
select new ItemList
{
Title = (string)i.Element("title"),
Description = (string)i.Element("description"),
Link = (string)i.Element("link").Attribute("url").Value
};
itemList = query.ToList();
每当我解析链接时都会出错。我想我找到了原因,这是因为 tag <channelContents>
。标题为“d”的项目具有在描述之后出现的标签,其中违反了<item>
. 是否可以只解析项目,<channelContents>
因为它具有相同的项目(a,b 和 c)?
我收到一个错误:
NullReferenceException 因为 itemList 为空。
我尝试删除Link = (string)i.Element("link").Attribute("url").Value
,它确实有效。但我需要得到链接。