none
Удаление узла(ов) по "номеру" в XML RRS feed

  • Вопрос

  • Есть XML документ простейшего вида
    <Links>
      <Link>
        <Name>.....</Name>
        <Site>......</Site>
        <parameters>
          <f>0</f>
          <o>1</o>
          <tm>3</tm>
          <s>-1</s>
        </parameters>
        <Uri>http......</Uri>
      </Link>
      <Link>
        <Name>......</Name>
        <Site>............</Site>
        <parameters>
          <f>0</f>
          <o>1</o>
          <tm>3</tm>
          <s>-1</s>
        </parameters>
        <Uri>http.....</Uri>
      </Link>
    </Links
    Получаю номер или номера узлов("Link") которые нужно удалить. Как это оптимально сделать? Я так понимаю, что оптимально - это используюя LINQ (что-то типа Extensions..Remove<(Of <(T>)>) )... у меня что-то не очень получается
    • Перемещено SachinW 1 октября 2010 г. 22:14 MSDN Forums Consolidation (От:Начинающие разработчики)
    1 декабря 2009 г. 16:05

Ответы

  • Хм..думаю вот так:
                XDocument doc = XDocument.Load(fileName);       
                IEnumerable<XElement> Link = doc.Descendants("Link").ToList();
                XElement[] LinkArr = Link.ToArray();
                LinkArr[0].Remove();//Удаляется узел Link с индексом "0"
                doc.Save(fileName);

    • Предложено в качестве ответа I.Vorontsov 2 декабря 2009 г. 17:29
    • Помечено в качестве ответа I.Vorontsov 29 декабря 2009 г. 11:14
    2 декабря 2009 г. 17:27

Все ответы

  • А как вы возвращаете номер узла?
    2 декабря 2009 г. 6:51
  • Пока, для удаления одного узла сделал так:

                int index = номер узла который нужно удалить;
                XElement xdoc = XElement.Load(FileName);
                int count = 0;
                foreach (var element in xdoc.Elements())
    	        {
    		        if (count == index) { element.Remove(); }
                    count++;
    	        }
                xdoc.Save(FileName);
    2 декабря 2009 г. 10:00
  • Хм..думаю вот так:
                XDocument doc = XDocument.Load(fileName);       
                IEnumerable<XElement> Link = doc.Descendants("Link").ToList();
                XElement[] LinkArr = Link.ToArray();
                LinkArr[0].Remove();//Удаляется узел Link с индексом "0"
                doc.Save(fileName);

    • Предложено в качестве ответа I.Vorontsov 2 декабря 2009 г. 17:29
    • Помечено в качестве ответа I.Vorontsov 29 декабря 2009 г. 11:14
    2 декабря 2009 г. 17:27