XML ノードに Linq C# で属性があるかどうかを確認しますか? 質問する

XML ノードに Linq C# で属性があるかどうかを確認しますか? 質問する

ノードに実際に特定の属性があるかどうかを確認するにはどうすればよいでしょうか? 次のような複数のノードを含む XML ファイルがあります。

<Field From="OldString" To="NewString" /> 

ここまでは順調です。問題は、この構造が変更され、一部のノードが次のようになることです。

<Field From="OldString" To="NewString" PrefixValue="OptionalAttribute" />

さて、PrefixValue が存在する場合、その属性の値を文字列の先頭に追加することになっていますが、これはそれほど難しいことではありません。しかし、ノードに PrefixValue 属性が存在するかどうかを確認しようとすると、いくつかの問題が発生しました。PrefixValue が存在しないインスタンスでは、属性 PrefixValue はノードにまったく存在しません。Linq 式を使用して属性が存在するかどうかを確認するにはどうすればよいでしょうか。

ベストアンサー1

まあ、それは何をしたいかによります。投影で使用したい場合は、以下を使用できます。

(string) element.Attribute("PrefixValue")

属性が欠落している場合は null を返すので便利です。

where 句で使用したい場合は、次のようにします。

where element.Attribute("PrefixValue") != null

おすすめ記事