xml ファイルから .xml ファイルに値をロードするメソッドを作成しましたtextBoxes
。
private void load(TreeNodeMouseClickEventArgs e)
{
XDocument doc = XDocument.Load(@"test.xml");
string nodeName = e.Node.Text;
var data = from q in doc.Descendants("dog")
where (string)q.Attribute("name") == nodeName
select new Data
{
name = q.Attribute("name").Value,
breed = q.Element("breed").Value,
sex = q.Element("sex").Value
};
foreach (var element in data)
{
textBox1.Text = element.name;
textBox2.Text = element.breed;
comboBox1.Text = element.sex;
}
}
name
同じであるが異なる別の犬を追加しない限り、問題なく動作しますbreed
。私のxmlファイルは次のようになります。
<dogs>
<dog name="Mike">
<breed>dachshund</breed>
<sex>true</sex>
</dog>
<dog name="Mike">
<breed>husky</breed>
<sex>true</sex>
</dog>
</dogs>
2 番目のノードから値を読み込もうとしても、名前付きのエントリMike
が以前に見つかったため、何も起こりません。リストを使用しようとしましたが、うまくいきませんでした (または、何か間違ったことをしただけです)。そのような「重複」を許可したいのですが、1:1 の重複のみが禁止されています (この部分は既に作成されており、動作します)。breed
私が取得するのと同様の方法で取得する方法があればname
、問題は解決します-where
クエリに別の方法を追加するだけです。
private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
nodeName = e.Node.Text;
}
それが私が得ている方法ですname
- で目的のノードをクリックすることによってtreeView
。同じ名前のエントリが複数ある場合は、最新のものだけが読み込まれます。だから私の質問は:それをどのように処理するのですか?トムという犬種のダックスフッドと、トムという犬種のブレッド ハスキーがいることは明らかです。