XML がどのように機能するかを学ぼうとして、XML を少しいじってみたところ、奇妙な問題に遭遇しました。XML ファイルに対してクエリを実行すると、存在することがわかっている結果が得られないことがあります。実際、結果が得られるのは最初のエントリだけです。以下は、XML エントリの例と、ユーザーが存在するかどうかを確認するための小さな関数です。
<users>
<user>
<username>a</username>
<firstname>a</firstname>
<lastname>a</lastname>
</user>
<user>
<username>b</username>
<firstname>b</firstname>
<lastname>b</lastname>
</user>
<user>
<username>rawr</username>
<firstname>a</firstname>
<lastname>a</lastname>
</user>
</users>
>
private bool FindUser(string username)
{
XDocument doc = XDocument.Load(filePath);
var data = from item in doc.Descendants("users")
where item.Element("user").Element("username").Value == username.ToLower()
select new
{
usernameEle = item.Element("user").Element("username").Value
};
var p = data.FirstOrDefault();
if (p != null)
return true;
else
return false;
}
ユーザー「a」を検索しようとすると、true が返されます。他のユーザー名を検索すると、false が返されます。
簡単な解決策があると確信していますが、それは私を避けています! どんな助けでも素晴らしいでしょう。