Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как удалить несколько элементов из XML? с конца... 
:(
    Опции темы
Laprado
Дата 5.6.2006, 19:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 121
Регистрация: 24.5.2006
Где: Firefox

Репутация: нет
Всего: нет



Возникла необходимость удалить заданное число таких веток:

Код

<one>
    <name>Laprado</name>
    <comment>3</comment>
    <date>22:35</date>
  </one>


Причем надо удалять с конца. Общий вид xml такой:

Код

<?xml version="1.0" encoding="utf-8"?>
<program>
  <one>
    <name>Laprado</name>
    <comment>1</comment>
    <date>22:35</date>
  </one>
  <one>
    <name>Laprado</name>
    <comment>2</comment>
    <date>22:35</date>
  </one>
  <one>
    <name>Laprado</name>
    <comment>3</comment>
    <date>22:35</date>
  </one>
</program>
  

Это сообщение отредактировал(а) Laprado - 5.6.2006, 19:55
--------------------
PM MAIL   Вверх
Prehistorik
Дата 6.6.2006, 09:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 146
Регистрация: 30.5.2006
Где: СПб

Репутация: 2
Всего: 3



Интересная задача... по идее можно делать так:
Код

XmlDocument doc = new XmlDocument();
doc.Load(xmlFileName);
XmlNode program = doc.ChildNodes[1];
for(int i = program.ChildNodes.Length - 1; i > program.ChildNodes.Length - Count; i--)
{
   program.ChildNodes[i].RemoveChild();
}


Но тут есть интересный момент... Дело в том, что с одной стороны понятно, что элементы загружаются в ChildNodes поочереди, но с другой стороны - это нигде не специфицировано. Так что... 


update:
C RemoveChild... Я точно не помню как он работает, но эксперементально это можно легко определить. 

Это сообщение отредактировал(а) Prehistorik - 6.6.2006, 09:08
--------------------
Есть только один бог - Ассемблер, и С - пророк его. 
PM MAIL   Вверх
Laprado
Дата 6.6.2006, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 121
Регистрация: 24.5.2006
Где: Firefox

Репутация: нет
Всего: нет



Prehistorik, не работает... а как удлалить сразу несколько элементов обычным образом, не с конца? 
--------------------
PM MAIL   Вверх
Prehistorik
Дата 7.6.2006, 07:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 146
Регистрация: 30.5.2006
Где: СПб

Репутация: 2
Всего: 3



Согласен. В прошлом коде налажал. Но вот этот работает....
Код

      //deleting N nodes from the last.
      int N = 2;

      //Loading XML-file.
      System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
      doc.Load(stream);

      //Deleting nodes.
      System.Xml.XmlNode rootNode = doc.ChildNodes[1];
      int nodeCount = rootNode.ChildNodes.Count;
      for(int i = nodeCount - 1; i >= nodeCount - N; i--){
        rootNode.RemoveChild(rootNode.ChildNodes[i]);
      }
 
--------------------
Есть только один бог - Ассемблер, и С - пророк его. 
PM MAIL   Вверх
Laprado
Дата 7.6.2006, 17:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 121
Регистрация: 24.5.2006
Где: Firefox

Репутация: нет
Всего: нет



МОДЕРАТОРЫ! Срочно дайте Prehistorik в репу +1  smile  smile 


Prehistorik, все работает, пасиба!  smile  
--------------------
PM MAIL   Вверх
ivashkanet
Дата 7.6.2006, 20:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



Laprado
Цитата(Laprado @  7.6.2006,  17:35 Найти цитируемый пост)
Срочно дайте Prehistorik в репу +1 

fixed  smile  
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0662 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.