У меня есть TreeView
, который содержит узлы, и после нажатия на один из них данные загружаются из файла и заполняются TextBoxes
и т. Д. Я хочу предотвратить создание дубликатов, поэтому каждый раз, когда текст «title» textBox содержит запись который уже существует в .xml-файле, он удаляется. Моя проблема в том, что после первого нажатия кнопки, которая добавляет запись, все в порядке. Но после второго щелчка (textBox.Text
значение не изменяется, так что это будет дубликат) узел исчезает, даже если я его модифицирую. И после каждого двойного щелчка добавляется новый дочерний узел в treeView. Я попытался сделать это сам, но у меня кончились идеи.LINQ to XML, изменяющий существующие узлы
код кнопки:
private void button1_Click(object sender, EventArgs e)
{
XDocument doc = XDocument.Load("test.xml");
bool ifDuplicate = doc.Descendants("dog")
.Any(x => (string)x.Attribute("name") == textBox1.Text);
if (ifDuplicate == true)
{
var xElement = (from q in doc.Elements("dogs").Elements("dog")
where q.Attribute("name").Value == textBox1.Text
select q);
foreach (var a in xElement)
a.Remove();
doc.Save("test.xml");
return;
}
gender(); //determines in which root node this entry will appear as child node; just comboBox with few exceptions
TreeViewOperations.SaveTree(treeView1, "test2.xml"); //saving treeView1
Save("test.xml"); //saving file that contains data form textBoxes etc.
statusBarUpdate();
}
Так что мой вопрос: есть ли лучший способ изменить существующие узлы и удаление дубликатов? Также можно приложить метод загрузки, если это необходимо.
редактировать: Сохранить метод
private void Save(string filename) { XDocument database = XDocument.Load(filename); XElement dog = new XElement("dog"); database.Element("dogs").Add(dog); dog.Add(new XAttribute("name", textBox1.Text)); dog.Add(new XElement("breed", comboBox3.Text)); dog.Add(new XElement("sex", radioButton3.Checked)); database.Save(filename); }
Где вы добавите запись в XML? –
Я обновил вопрос с кодом. – PotatoBox
Когда 'ifDuplicate' является' true'. Вы удаляете элемент без добавления нового. Это нормально? Это не только предотвращает дублирование, не будет никакого элемента с именем 'textBox1.Text'. –