簡単な質問がありました: 現在、XML ファイルの操作方法を学習しようとしています。質問を実行したいと考えています:
私は確かにいくつかの助けを借りることができるちょっとした問題に遭遇しました. 以下に、単純な小さな XML ファイル (Users.XML) を作成しました。
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<users>
<user>
<firstname>Might</firstname>
<lastname>Guy</lastname>
<username>SomeUser</username>
</user>
<user>
<firstname>Bob</firstname>
<lastname>Marley</lastname>
<username>BobMarley</username>
</user>
</users>
私がやりたいことは、そのファイルにクエリを実行して、ユーザーに関する特定の情報を取得する方法を見つけることです。姓、名、関係ありません。さて、いろいろ調べてみると、多くの人がより良い方法の1つと考えているのは次のとおりです。
string firstName;
var data = from item in doc.Descendants("users")
where item.Element("user").Element("username").Value == "SomeUser"
select new
{
fname = item.Element("user").Element("firstname").Value
};
//Checking to see if anything was found. I know this isn't necessary to pull
//the information. I'm just doing this so I can know to throw an error to the
//screen if none is found
if (data.Count() > 0)
//Now pull the data. Should only be 1 hit
foreach (var p in data)
{
firstName = p.ToString();
}
else
MessageBox.Show("No such user found");
さて、このサンプル コードでは、ユーザーのファースト ネームが表示されます。ただし、firstName の実際の内容は「fname = Might」です。私が入れたいのは「力」だけです。もちろん、選択から「fname =」を削除すると、フィールドに名前を付けていないというエラーがスローされるため、壁にぶつかります。解決策をグーグルで検索しようとしましたが、グーグルで何を検索しているのかわからないため、あまり運がありませんでした。
だから私は3つの質問があります。情報を含むチュートリアルの方向性を示す方が簡単だとしたら、それにもわくわくします! 簡単な解決策を探しているだけでなく、タスクを完了するだけでなく XML を学習しようとしているので、なぜこのようになっているのかを理解しようとしています。
-A) このメソッドを使用して、firstName に「fname = Might」ではなく「Might」を単純に含めることは可能ですか? もしそうなら、どのように?そうでない場合、それを行う別の方法はありますか?
-B) なぜ「fname ="」が必要なのですか? これは LINQ と関係がありますか、それとも完全に別のものの一部ですか? LINQ/XML 以外に、この例はまだ他に見つけることができていないため、なぜこのようになっているのかについて、より詳細な説明を得ることができませんでした。
-C) これは、この例でやろうとしていること、つまり、あるフィールド (この場合はユーザー名) に基づいて特定の情報を XML ファイルに照会するための受け入れ可能な方法ですか? そうでない場合は、より良い方法を教えていただけますか?