PDA

Просмотр полной версии : XML редактирование.


BlincAttack
06.10.2009, 16:00
В общем имеется код:

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 файл такого формата:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<base>
<0>
<question>
<1>Hello</1>
</question>
<answer>
<0>Превед!</0>
</answer>
</0>
</base>

Не подскажите как можно сделать редактирование xml напрямую из программы.Например строками "Введите вопрос" и "Введите ответ".
За ранее благодарен!