この 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();
リンクを解析するたびにエラーが発生します。そして、その理由がわかったと思います。それはタグのせいです<channelContents>
。タイトル「d」のアイテムには、説明の後にあるタグがあり、 のパターンに違反してい<item>
ます。<channelContents>
同じアイテム(a、b、c)があるため、アイテムを解析することは可能ですか?
エラーが発生します:
itemList が null であるため、NullReferenceException が発生します。
削除Link = (string)i.Element("link").Attribute("url").Value
してみましたが、うまくいきました。しかし、リンクを取得する必要があります。