今日はどうですか?C#XML解析 - 一部の「アイテム」のヌルタグをスキップ
私はこのコードを使用して、XMLファイルを読み込み、後で各ループの結果をmyに配置します。
var document = XDocument.Load(e.Result);
if (document.Root == null)
return;
var georss = XNamespace.Get("http://www.georss.org/georss");
var events1 = from ev1 in document.Descendants("channel").Elements("item")
let values = ev1.Element(georss + "point").Value.Split(' ')
select new
{
Latitude = double.Parse(values[0], CultureInfo.InvariantCulture),
Longitude = double.Parse(values[1], CultureInfo.InvariantCulture),
Title = (ev1.Element("title").Value),
};
blahblahMethod();
foreach (var ev1 in events1)
{
blah blah do stuff
}
は[OK]を、私たちがしているので、そこに、私は、XMLファイル内の各親「の項目」タグ内にネストされている「点」と「タイトル」タグの内容をつかみます。 XMLファイルには10個の項目があります。問題は、「項目」のすべてに「ポイント」タグが含まれているわけではないことです。それはいくつかの項目から完全に欠けている。そのため、「タイトル」タグだけがあります。
XMLリーダーがこれらの項目のいずれかに到達すると、 'NullReferenceException was unhandled'がスローされます。それで、かなり明白な何が起こっている。私はこれを回避する方法に問題があります。私はいくつかの 'if'文を考えました。もしそれがヌルタグになると、それはスキップされますが、VSは受け入れて何のエラーも投げない何かに合っているようです。どんな助けもありがたい。
もう一度ブラミストライク...アンソニーありがとう、それはそれをクラックした。私は "e"を "ev1"に変更しなければならなかった、それは間違いだったと思う?そうでなければ何か新しいことを学んだ;-)私は決して実際にWhereステートメントを使用したことがないので、私の心を越えたことはありません。コーディングのレッスンにもう一度感謝します! –
実際にもう1つ、ここで何が起こっているのか理解できるように助けてくれますか?それはgeorss + pointタグを使ってアイテムをフィルタリングするように見えますが、明らかに反対です! :-D –
@Dan:あなたはev1を使用していますが、eは既にスコープにあります(コードはeventargsパラメータとしてeを使用しているイベントハンドラにあります)ので、eを使用するのは間違いでした。私は使用することができます: - pinkElephants => pinkElephants.Element(...)それは働いていたでしょう。 – AnthonyWJones