Я написал метод, который загружает значения из xml-файла в textBoxes
.LINQ to XML обрабатывает дубликаты
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>
Когда я пытаюсь значение нагрузки от второго узла, ничего не происходит, так как запись с именем Mike
была найдена ранее. Пробовал использовать списки, но это не сработало (или просто я сделал что-то не так). Я хочу разрешить такие «дубликаты», только дубликаты 1: 1 являются forriben (уже написана эта часть, и она работает). Если бы был способ получить breed
аналогичным образом, так как я получаю name
, это решит проблему - просто добавьте еще where
в запрос.
private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
nodeName = e.Node.Text;
}
Вот как я получаю name
- нажав на нужный узел в treeView
. Если есть более одной записи, названной так же, она загружает только последние. Поэтому мой вопрос: как с этим бороться? Очевидно, что может быть собака по имени Том, порода дач и собака по имени Том, хлеб хриплый.
Когда вы назначаете значение в текстовое поле в цикле, у вас будет назначено только последнее значение. Чего вы пытаетесь достичь? –
Да, вы правы, это моя проблема. Я хочу иметь возможность загружать определенный узел, но пока, если есть два узла с одним и тем же «именем», он загружает последнюю, несмотря ни на что. Как @ Жан-Бернард Пеллерин, я могу использовать другое свойство, тег. – PotatoBox
Это winforms или веб-приложение? –