На данный момент мой код работает отлично, и нет никаких проблем, но я хотел получить информацию о том, есть ли более простой способ чтения XML файлов.
Итак, вот краткое изложение того, что я делаю :
- У меня есть большая программа, которая имеет дело с несколькими внешними факторами. В какой-то момент мне предоставляется файл XML, содержащий множество различных элементов и дочерних узлов.
- Для каждого ожидаемого элемента я создал класс с переменными, в которых будут храниться все данные из узла.
Мой XML файл выглядит не так, но вот простой пример, имитирующий его, чтобы вы лучше понимали, с чем я работаю.
-<status>
-<CallBase FilePath="EU\Domain Users" CallValid="True" CodedPath="D:\Users\CASE\"
TracePath="D:\Users\CASE\" StartEnviorment="" ServerLogs="" ServerPath="" ConfigPort="217757"
PacePort="217757" Version="2.5.0.73" Version2="10.3.0.73" VersionName="CASEservice"
LastTimeCheck="08/05/2020 15:05:07">
<ValidPermissions Default=""/>
</CallBase>
</status>
Я создал класс для элемента CallBase под названием «CallBase», который содержит строки для FilePath, CallValid, CodedPath, TracePath, StartEnviorment, ServerLogs, ServerPath, ConfigPort, PacePort, Version и т. Д.
Вот как я чтение этого специфицированного c узла и сохранение его в объекте CallBase:
private CallBase getCallBaseData(List<XmlDocument> xmlDoc, int i)
{
var result = xmlDoc[i].DocumentElement.SelectNodes("//CallBase");
foreach (var node in result)
{
var temp1 = node.ToString();
}
XmlNode xmlNode = xmlDoc[i].SelectSingleNode("//CallBase");
XmlSerializer serial = new XmlSerializer(typeof(CallBase));
CallBase tempresult = (CallBase)serial.Deserialize(new XmlNodeReader(xmlNode));
return tempresult;
}
Однако теперь у меня есть масса одинаковых функций, и я заменяю «CallBase» другим именем элемента. Мне интересно, есть ли другой способ сделать это, чтобы у меня была только одна функция.