2013-11-27 3 views
-2

Я не знаю, как удалить записи из моего XML-документа с кодом. Я даже не знаю, как начать эту часть, поэтому мне нужна помощь.Как удалить запись из документа XML с помощью кнопки удаления?

XML:

<?xml version="1.0" encoding="utf-8" ?> 
<Movies> 
- <Movie> 
    <Title>Seven</Title> 
    <LeadActors>Morgan Freeman, Brad Pitt</LeadActors> 
    <YearofRelease>1995</YearofRelease> 
    <Runtime>126</Runtime> 
    <Rating>R</Rating> 
    </Movie> 
    <Movie> 
    <Title>Sports</Title> 
    <LeadActors>me</LeadActors> 
    <YearofRelease>2044</YearofRelease> 
    <Runtime>126</Runtime> 
    <Rating>NC-17</Rating> 
</Movie> 

Это, как я добавить запись (я показываю это, чтобы показать, как я использую XML, так как существует много различных способов выполнения задачи). Там нет кода еще для удаления элемента, потому что я понятия не имею, как это сделать еще :):

var mov = XElement.Load(@"Data.xml"); 
var newMov = new Movies() 
{ 
    title = txtTitle.Text.Trim(), 
    leadActors = txtActors.Text.Trim(), 
    yearofRelease = (int)nudYear.Value, 
    runtime = (int)nudRuntime.Value, 
    rating = (string)cmbRating.SelectedItem 

}; 

//Adds the movie to Data.xml 
mov.Add(new XElement("Movie", 
    new XElement("Title", newMov.title), 
    new XElement("LeadActors", newMov.leadActors), 
    new XElement("YearofRelease", newMov.yearofRelease), 
    new XElement("Runtime", newMov.runtime), 
    new XElement("Rating", newMov.rating))); 

mov.Save(@"Data.xml"); 

//Adds the movie to the listbox 
lstCollection.Items.Add(newMov as Movies); 
UpdateList(); 

//Resets text box entries and focuses on title text box for next movie       
txtTitle.Clear(); 
txtTitle.Focus(); 
txtActors.Clear(); 

Я не думаю, я бы просто сделать обратное, но не могу понять это. Я действительно повесил newMove. в mov.add (будет использовать remove?) Раздел.

+0

Было бы более интересно увидеть ваш xml, а затем изображение приложения :) –

+1

Где код для удаления элемента из коллекции XML? – rae1

+0

@ Shades9323, если вы хотите, чтобы мы помогли вам удалить элемент из xml, тогда вы должны показать нам xml и код, который вы используете для удаления элемента из этого файла. Изображения и код приложения, которые вы используете для добавления элементов, не связаны с вашим вопросом. –

ответ

0

Что-то вроде этого удалит элемент из вашего Xml (обратите внимание, что этот простой метод удалит все фильмы с теми же свойствами, которые у вас есть на данный момент, если вы хотите получить более точное и точное удаление, вам нужно будет обеспечивает уникальный идентификатор в вашем Xml):

var fileName = @"Data.xml"; 
var mov = XElement.Load(fileName); 
var selectedMovie = (Movies)lstCollection.SelectedItem; 

mov.Elements("Movie").Where (m => m.Element("Title").Value == selectedMovie.title && m.Element("LeadActors").Value == selectedMovie.leadActors && Convert.ToInt32(m.Element("YearOfRelease").Value) == selectedMovie.yearOfRelease && Convert.ToInt32(m.Element("Runtime").Value) == selectedMovie.runtime && m.Element("Rating").Value == selectedMovie.rating).Remove(); 

mov.Save(fileName); 

что касается «уникального идентификатора», вы можете следить за поле фильма ID и установить, что для каждого Movies объекта, который вы создаете, а затем искать в Xml для этот идентификатор. Я оставлю вам это.

+0

Итак, в вашем примере я смог удалить только то, что было жестко закодировано? Как предоставить уникальный идентификатор в xml? Вы не можете удалить в зависимости от позиции в списке? Извините, если это глупые вопросы. Программирование для меня нелегко. – Shades9323

+0

Вам нужно будет указать заголовок выбранного элемента списка. Я обновляю свой ответ, чтобы предоставить альтернативу созданию уникального идентификатора, который вместо этого потребовал бы, чтобы вы предоставили все значения выбранного элемента. –

Смежные вопросы