XML редактирование.

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by BlincAttack, 6 Oct 2009.

  1. BlincAttack

    BlincAttack Banned

    Joined:
    29 Sep 2009
    Messages:
    21
    Likes Received:
    39
    Reputations:
    0
    В общем имеется код:
    Code:
    using System;
    using System.Runtime.InteropServices;
    using System.Text.RegularExpressions;
    
    class programm
    {
        [DllImport("ChilkatDotNet2.dll")]
        public static extern bool LoadXmlFile(string fileName);
    
        [DllImport("kernel32.dll")]
    
        public static extern bool SetConsoleTextAttribute(IntPtr hConsoleOutput,
        int wAttributes);
    
        [DllImport("kernel32.dll")]
    
        public static extern IntPtr GetStdHandle(uint nStdHandle);
    
        public static void Main(string[] args)
        {
            uint STD_OUTPUT_HANDLE = 0xfffffff5;
            IntPtr hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
            SetConsoleTextAttribute(hConsole, 12);
            Console.WriteLine("Здравствуйте, вас приветствует бот \"Болтун\".");
        retry:
        onlyname:
            SetConsoleTextAttribute(hConsole, 12);
            Console.Write("Для начала общения введите своё имя: ");
            SetConsoleTextAttribute(hConsole, 15);
            string myname = Console.ReadLine();
            myname = myname.Trim();
        botname:
            SetConsoleTextAttribute(hConsole, 12);
            Console.Write("Теперь введите имя бота с которым хотите общаться: ");
            SetConsoleTextAttribute(hConsole, 15);
            string botname = Console.ReadLine();
            botname = botname.Trim();
            if (myname == "")
            {
                Console.WriteLine("\nSystem: Вы должны обязательно ввести ваше имя!\n");
                goto retry;
            }
            if (botname == "")
            {
                Console.WriteLine("\nSystem: Вы должны обязательно ввести имя бота!\n");
                goto botname;
            }
            if (botname == myname)
            {
                Console.WriteLine("\nSystem: Ваш ник и имя бота не должно совпадать!\n");
                goto onlyname;
            }
            SetConsoleTextAttribute(hConsole, 15);
            Console.WriteLine("\nSystem: Отлично!Можете начинать общаться!");
            Console.WriteLine("System: Чтобы выйти с программы напишите \"!exit\".");
        ask:
            SetConsoleTextAttribute(hConsole, 10);
            Console.Write("\n{0}: ", myname);
            SetConsoleTextAttribute(hConsole, 7);
            string quest = Console.ReadLine();
            string answer = "";
            Chilkat.Xml obj = new Chilkat.Xml();
            obj.LoadXmlFile("bases.xml");
            if (quest == "!exit")
            {
                SetConsoleTextAttribute(hConsole, 15);
                Console.WriteLine("\nSystem: Спасибо за использование нашей программы!");
                Console.WriteLine("System: Нажмите любую клавишу...");
                goto exit;
            }
            
                for (int i = 0; i < obj.NumChildren; i++)
                {
                    Chilkat.Xml xmlField = obj.GetChild(i);
                    Chilkat.Xml q = xmlField.GetChildWithTag("question");
    
                    for (int j = 0; j < q.NumChildren; j++)
                    {
                        Regex rx = new Regex(q.GetChildContentByIndex(j), RegexOptions.IgnoreCase);
                        if (rx.IsMatch(quest))
                        {
                            Chilkat.Xml a = xmlField.GetChildWithTag("answer");
                            Random r = new Random();
                            int k = r.Next(0, a.NumChildren);
                            answer = a.GetChildContentByIndex(k);
                            goto name;
                        }
                    }
                }
            name:
                if (answer.Length > 0)
                {
                    SetConsoleTextAttribute(hConsole, 14);
                    Console.Write("\n{0}: ", botname);
                    SetConsoleTextAttribute(hConsole, 7);
                    Console.Write("{0}\n", answer); 
                }
                goto ask;
                return;
            exit:
                Console.ReadKey();
            }
        }
    
    Имеется парсер: _http://www.example-code.com/csharp/xml.asp

    И имеется xml файл такого формата:
    Code:
    <?xml version="1.0" encoding="utf-8" standalone="yes"?>
    <base>
    <0>
     <question>
    	<1>Hello</1>
     </question>
     <answer>
    	<0>Превед!</0>
     </answer>
    </0>
    </base>
    
    Не подскажите как можно сделать редактирование xml напрямую из программы.Например строками "Введите вопрос" и "Введите ответ".
    За ранее благодарен!