Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
2 / 2 / 0
Регистрация: 05.12.2013
Сообщений: 271

Как удалить из XML файла последнюю запись

10.09.2018, 17:18. Показов 2366. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте всем, вот создал я файл xml, а как мне прочитав этот файл удалить последнюю запись из него.
Так я файл создаю.
Как удалить саму запись "Заказ" но последнюю в списке.

C#
1
2
3
4
5
6
7
8
9
10
 
               XDocument doc = new XDocument(new XElement("Заказы"));
  
               doc.Root.Add(new XElement("Заказ",
                   new XElement("date", mass[0]),
                   new XElement("Имя", mass[1]),
                   new XElement("Выбранное-время", mass[2]),
                   new XElement("Количество", mass[3]),
                   new XElement("Выбранный-товар", mass[4]),
                   new XElement("Доставка", mass[5])));
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.09.2018, 17:18
Ответы с готовыми решениями:

Как удалить текст из xml файла
Подскажите пожалуйста как удалить текст (фамилия, имя, отчество, №Паспорта, Заказ с, До, Всего часов, время заказа) из xml файла? Вот из...

Программное создание и запись *.xml-файла, как осуществить и где почитать
Здравствуйте! Подскажите как программно записать *.xml файл? В самой программе много разных контролов будет, ну вот к примеру как создать...

Удалить последнюю строку из файла и посчитать количество символов в тексте
Прочитали текст из файла и теперь нужно удалить последнюю строку и посчитать количество символов в тексте.

5
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16139 / 11263 / 2888
Регистрация: 21.04.2018
Сообщений: 33,104
Записей в блоге: 2
10.09.2018, 19:09
Цитата Сообщение от Мдфв1234 Посмотреть сообщение
Как удалить саму запись "Заказ" но последнюю в списке
А что такое "последняя"? На практике она скорее всего будет последней в перечислении и её можно будет получить через Elements(). Но возможно попадёте и не на неё. Т.е. ни где не оговорено, что XElement записанный последним, будет и при считывании последним.

Добавлено через 3 минуты
Для корректной работы, Вам лучше ввести дополнительно поле (элемент или атрибут) по которому можно определить порядок создания записей. Если записи создаются не очень часто (реже чем раз в секунду), то удобно будет записывать полное время (включая дату) создания записи.
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
11.09.2018, 10:26
Цитата Сообщение от Элд Хасп Посмотреть сообщение
ни где не оговорено, что XElement записанный последним, будет и при считывании последним.
Элементы считываются и представлены в коллекции в том же порядке, в каком они находятся в документе; метод Add добавляет в конец.
Если параллельно кто-то не редактирует файл, изменяя в нем порядок элементов, то последний элемент в документе будет последним в коллекции.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16139 / 11263 / 2888
Регистрация: 21.04.2018
Сообщений: 33,104
Записей в блоге: 2
11.09.2018, 11:53
Цитата Сообщение от kolorotur Посмотреть сообщение
последний элемент в документе будет последним в коллекции
На практике это так, но я не встречал в документации чтобы это описывалось как обязательное условие.
Хотя может упустил что-то, не прочитал...

Добавлено через 44 минуты
Если рассчитывать на то что последний созданный будет всегда и последним в коллекции, то вот пример:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
        static void Main(string[] args)
        {
 
            XDocument doc = new XDocument(new XElement("Заказы"));
            Random myrnd = new Random(); /*Генератор случайных чисел*/
            for (int Ind = 0; Ind < 5; Ind++) /*Цикл добавления случайных элементов*/
            {
                string rntstr = myrnd.Next().ToString(); /*Получение случайной строки*/
                doc.Root.Add(new XElement("Заказ", /*Добавление нового элемента со случайными значениями*/
                    new XElement("date", "Дата" + rntstr),
                    new XElement("Имя", "Имя" + rntstr),
                    new XElement("Выбранное-время", "время" + rntstr),
                    new XElement("Количество", "Количество" + rntstr),
                    new XElement("Выбранный-товар", "товар" + rntstr),
                    new XElement("Доставка", "Доставка" + rntstr)));
            }
            doc.Save("myxml.xml"); /*Сохранение созданного XDocument в файле myxml.xml*/
            doc = null; /*Сброс ссылки*/
            doc = XDocument.Load("myxml.xml"); /*Чтение XML-данных из файла*/
            IEnumerable<XElement> listorder = doc.Root.Elements("Заказ"); /*Получение списка созданных элементов "Заказ"*/
            int count = listorder.Count(); /*Количество элементов "Заказ"*/
            XElement lastelement = listorder.ElementAt(count - 1); /*Получение последнего в списке элемента "Заказ"*/
            lastelement.Remove(); /*Удаление последнего элемента*/
            doc.Save("myxml.xml"); /*Сохранение результатов*/
 
        }
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
11.09.2018, 11:59
Цитата Сообщение от Элд Хасп Посмотреть сообщение
я не встречал в документации чтобы это описывалось как обязательное условие.
Ну как же?

Метод Add:
This method adds the new content after the existing content of the XContainer.
Что такое "существующий контент" описано здесь.
Вкратце: если это атрибут, то он добавляется после всех атрибутов; если элемент, то после всех элементов; если текст, то приклеивается в конец существующего текста.

С выборкой еще проще.

Метод Element:
Gets the first (in document order) child element with the specified XName.
Метод Elements:
Returns a collection of the child elements of this element or document, in document order.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16139 / 11263 / 2888
Регистрация: 21.04.2018
Сообщений: 33,104
Записей в блоге: 2
11.09.2018, 12:14
Цитата Сообщение от kolorotur Посмотреть сообщение
Ну как же?
Значит я ошибался и излишне перестраховывался.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.09.2018, 12:14
Помогаю со студенческими работами здесь

Удалить из текстового файла его последнюю строку. Результат записать в другой файл
удалить из текстового файла его последнюю строку. Результат записать в другой файл. У меня есть код, но почему то не работает. Помогите...

Как удалить запись из XML-файла
Всем привет! Подскажите как удалить узел в xml документе: есть документ: &lt;?xml version=&quot;1.0&quot;...

Поменять любую запись местами с последней и удалить последнюю запись.
Помогите пожалуйста! Мне для программы, которая использует records (записи), нужно написать процедуру, которая меняет любую запись...

Как удалить из текстового файла последнюю строку
как удалить из текстового файла последнюю строку и записать результат другой файл ?

Как удалить первую и последнюю строки из текстового файла?
как удалить последнюю строчку из txt? и как удалить первую строчку из txt?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru