Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Как удалить несколько элементов из XML?


Автор: Laprado 5.6.2006, 19:50
Возникла необходимость удалить заданное число таких веток:

Код

<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>
  

Автор: Prehistorik 6.6.2006, 09:07
Интересная задача... по идее можно делать так:
Код

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... Я точно не помню как он работает, но эксперементально это можно легко определить. 

Автор: Laprado 6.6.2006, 16:24
Prehistorik, не работает... а как удлалить сразу несколько элементов обычным образом, не с конца? 

Автор: Prehistorik 7.6.2006, 07:25
Согласен. В прошлом коде налажал. Но вот этот работает....
Код

      //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]);
      }
 

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


Prehistorik, все работает, пасиба!  smile  

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

fixed  smile  

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)