特定の属性を持つ要素が存在するかどうかを解析するxml文書があります。XMLからLinq要素へ属性から選択するときにオブジェクト参照エラーが発生する
私は
item.Descendants().Elements("nameValue");
を行うと、私は結果の束を見ることができると私はドリルダウンしたときに、私も属性
だが、私はこのようになりますNAMEVALUEノードがあるとしましょう見ることができます。
<nameValue idref="myIDRef" name="elementName"/>
この要素をidrefで見つけ出すのに2つの方法を試しましたが、どちらもオブジェクト参照エラーを返します。私は、これは非常に簡単であると確信しているが、私は、私は本当に
item.Descendants().Select(a => a.Element("nameValue")).Where(b => b.Attribute("idref").Value == "myIDRef");
item.Descendants().Elements("nameValue").Single(a => a.Attribute("idref").Value == "myIDRef");
上記の作業のどちら
EDITをこだわっていることをあまりにも長い間、この見つめてきた:私は、私は考え出したと思いますなぜそれが働いているのか。私のnameValue要素のコレクションには何百もの項目がありますが、そのすべてが "idref"属性を持っているわけではありません。そのため、特定の属性がコレクションに存在していてもオブジェクト参照エラーが発生します。
はこれに対する私のソリューションは、あなたが使用できるのLINQを使用してXPathSelectElements代わり
var nameValueArr = element.XPathSelectElements("descendant::nameValue[@idref='myIDRef']");
2つ目は何が問題なのですか?それは私のために働く – Magnetron
私は考えていない、私は二重と三重を綴りとすべてをチェックしました。それだけでは機能しません。 これは動作しました: var nameValueTest = element.XPathSelectElement( "descendant :: nameValue [@ idref = 'myIDRef']"); – JOO
値を使用すると、見つからない場合があります。 b.Attribute( "idref")ValueTo "(文字列)b.Attribute(" idref ") – jdweng