Я изучаю Windows Forms в C # .NET 2008 и хочу создать класс для работы с SIMPLE xml-файлами (конфигурационный файл, такой как INI-файлы), но мне просто нужен простой класс (open, getvalue, setvalue, creategroup, сохранить и закрыть функции), чтобы заменить INI-файлы.
Я уже что-то сделал, и это работает, но у меня возникают проблемы, когда мне нужно создать разные группы, что-то вроде этого:
<?xml version="1.0" encoding="utf-8"?>
<CONFIG>
<General>
<Field1>192.168.0.2</Field1>
</General>
<Data>
<Field1>Joseph</Field1>
<Field2>Locked</Field2>
</Data>
</CONFIG>
как мне указать, что я хочу прочитать field1 группы [data]? обратите внимание, что у меня одинаковое имя поля в обеих группах (Field1)!
Я использую System.Linq, что-то вроде этого:
Чтобы открыть документ:
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(FilePath);
Для сохранения документа:
xmlDoc.Save(FilePath);
Чтобы получить значение:
public string getValue(string Field)
{
string result = "";
try
{
XmlNodeList xmlComum = xmlDoc.GetElementsByTagName(Field);
if (xmlComum.Item(0) == null)
result = "";
else
result = xmlComum.Item(0).InnerText;
}
catch (Exception ex)
{
return "";
}
return result;
}
Для установки значения:
public void setValue(string Group, string Field, string FieldValue)
{
try
{
XmlNodeList xmlComum = xmlDoc.GetElementsByTagName(Field);
if (xmlComum.Item(0) == null)
{
xmlComum = xmlDoc.GetElementsByTagName(Group);
if (xmlComum.Item(0) == null)
{
// create group
createGroup(Group);
xmlComum = xmlDoc.GetElementsByTagName(Group);
}
XmlElement xmlE = xmlDoc.CreateElement(Field);
XmlText xmlT = xmlDoc.CreateTextNode(FieldValue);
xmlE.AppendChild(xmlT);
xmlComum.Item(0).AppendChild(xmlE);
}
else
{
// item already exists, just change its value
xmlComum.Item(0).InnerText = Value;
}
xmlDoc.Save(FilePath);
}
catch (Exception ex)
{
}
}
Код CreateGroup:
public void createGroup(string Group)
{
try
{
XmlElement xmlComum = xmlDoc.CreateElement(Group);
xmlDoc.DocumentElement.AppendChild(xmlComum);
xmlDoc.Save(FilePath);
}
catch (Exception ex)
{
}
}