この状況を確実に処理するには、基本的に 2 つの方法があります。
最初の方法は、 を定義し、VariableContext
使用する値を XPath 変数に入れることです。次に、次のような式を使用できます。
//somePath/FieldData[@Location = $user]/@Value
この投稿でその方法を説明します。VariableContext
適切なものが .NET に組み込まれていないため、クラスを作成する必要がありますが、提供する例はほとんどの場合にそのまま機能するはずです。
もう 1 つのオプションは、Linq-to-XML を使用することです。そのルートに行く場合は、XPath の代わりに Linq を使用してノードをクエリでき、この方法では区切り文字は問題になりません。
// here the doc variable is an XElement or XDocument
var value = (from fd in doc.Descendants("FieldData")
where (string)fd.Attribute("Location") == sUser
select fd.Attribute("Value")).FirstOrDefault();
または、他の Linq 構文を使用します。
var value = doc.Descendants("FieldData")
.Where(fd => (string)fd.Attribute("Location") == sUser)
.Select(fd => fd.Attribute("Value"))
.FirstOrDefault();