none
Как добавить строку в XML RRS feed

  • Вопрос

  • Как добавить строку в XML файл такого типа:

    <?xml version="1.0"?>  
    <serverlist>   
    <ip>46.174.52.20:27207</ip>
    </serverlist> 

    Скрипт должен открывать файл и добавлять новую строку вида:

    <ip>PEREMENNAYA</ip>

    Я только изучаю все это, поэтому попрошу объяснить как можно больше. Заранее благодарю

    22 августа 2014 г. 9:31

Ответы

  • Так примерно:

    using System;
    using System.Xml;
    
    namespace ConsoleApplication
    {
        internal class Program
        {
            private static void Main(string[] args)
            {
                var doc = new XmlDocument();
                doc.Load("XMLFile.xml");
    
                XmlNode root = doc.DocumentElement;
    
                XmlElement elem = doc.CreateElement("ip");
                elem.InnerText = "PEREMENNAYA";
    
                root.ReplaceChild(elem, root.FirstChild);
    
                doc.Save(Console.Out);
            }
        }
    }
    Файл XML поместите в папку с приложением.


    Сделаем содержимое сообщества лучше, вместе!

    • Предложено в качестве ответа Алексей ЛосевEditor 22 августа 2014 г. 10:35
    • Помечено в качестве ответа AlexUkr96 22 августа 2014 г. 11:01
    22 августа 2014 г. 9:59
    Модератор
  • Тогда так:

    XmlElement elem = doc.CreateElement("ip");
                elem.InnerText = "PEREMENNAYA";
    
                root.AppendChild(elem);
    
                doc.Save("XMLFile.xml");


    Сделаем содержимое сообщества лучше, вместе!

    • Помечено в качестве ответа AlexUkr96 22 августа 2014 г. 12:06
    22 августа 2014 г. 11:20
    Модератор
  • А где у вас doc.Load("XMLFile.xml"); Его нет, поэтому ошибка.

    Сделаем содержимое сообщества лучше, вместе!

    • Помечено в качестве ответа AlexUkr96 22 августа 2014 г. 12:06
    22 августа 2014 г. 11:46
    Модератор

Все ответы

  • Так примерно:

    using System;
    using System.Xml;
    
    namespace ConsoleApplication
    {
        internal class Program
        {
            private static void Main(string[] args)
            {
                var doc = new XmlDocument();
                doc.Load("XMLFile.xml");
    
                XmlNode root = doc.DocumentElement;
    
                XmlElement elem = doc.CreateElement("ip");
                elem.InnerText = "PEREMENNAYA";
    
                root.ReplaceChild(elem, root.FirstChild);
    
                doc.Save(Console.Out);
            }
        }
    }
    Файл XML поместите в папку с приложением.


    Сделаем содержимое сообщества лучше, вместе!

    • Предложено в качестве ответа Алексей ЛосевEditor 22 августа 2014 г. 10:35
    • Помечено в качестве ответа AlexUkr96 22 августа 2014 г. 11:01
    22 августа 2014 г. 9:59
    Модератор
  • doc.Save(Console.Out);

    а можете подробнее рассказать об этой строке. Как я понял, она сохраняет документ и выводит в консоль что-то

    22 августа 2014 г. 10:55
  • Да, выводит новое содержимое документа в консоль.

    Сделаем содержимое сообщества лучше, вместе!

    22 августа 2014 г. 10:56
    Модератор
  • А можно просто сохранить без вывода. Я кстати забыл сообщить, что проект Windows Forms

    22 августа 2014 г. 10:59
  • Да, конечно можно. Указываете имя файла

    doc.Save("XMLFile.xml");
    вместо консоли.

    Сделаем содержимое сообщества лучше, вместе!

    22 августа 2014 г. 11:04
    Модератор
  • Спасибо большое за помощь, но я, наверное, неконкретно поставил вопрос. Скомпилировав Ваш код все работало, но мне нужно не заменять строку, а дописывать еще одну. Благодарю за помощь.
    22 августа 2014 г. 11:11
  • Тогда так:

    XmlElement elem = doc.CreateElement("ip");
                elem.InnerText = "PEREMENNAYA";
    
                root.AppendChild(elem);
    
                doc.Save("XMLFile.xml");


    Сделаем содержимое сообщества лучше, вместе!

    • Помечено в качестве ответа AlexUkr96 22 августа 2014 г. 12:06
    22 августа 2014 г. 11:20
    Модератор
  • То есть должен получиться вот такой код:

                var doc = new XmlDocument();
                XmlElement elem = doc.CreateElement("ip");
                elem.InnerText = textBox1.Text;
                XmlNode root = doc.DocumentElement;
                root.AppendChild(elem);
                doc.Save(@pathToCounterStrike + "\\MenuSystem\\Server_favor.xml");

    • Помечено в качестве ответа AlexUkr96 22 августа 2014 г. 12:06
    • Снята пометка об ответе AlexUkr96 22 августа 2014 г. 12:06
    22 августа 2014 г. 11:28
  • В строке

    root.AppendChild(elem);

    Ошибка:

    Дополнительные сведения: Ссылка на объект не указывает на экземпляр объекта.

    22 августа 2014 г. 11:42
  • А где у вас doc.Load("XMLFile.xml"); Его нет, поэтому ошибка.

    Сделаем содержимое сообщества лучше, вместе!

    • Помечено в качестве ответа AlexUkr96 22 августа 2014 г. 12:06
    22 августа 2014 г. 11:46
    Модератор
  • Спасибо больше за помощь, все работает как часы.
    22 августа 2014 г. 12:06