Синтаксический анализ xml-файла через C#
У меня есть одно требование к разбору существующего xml-файла.
Мне нужно прочитать существующий xml-файл, разобрать некоторые теги внутри него и сбросить их в новый xml-файл .Исходные xml-файлы генерируются по мере необходимости внутри каталога.Мне нужно проверить, попадет ли новый файл в каталог, если он попадет (старые файлы будут там, в стороне каталога, и они не будут очищены), затем разобрать xml-файл и сгенерировать новый .
В качестве примера я приложил исходный xml-файл в
Original_xmldirectoryи обращенный в
Converted_Xmldirectoryвнутри вложенной папки.
Обратите внимание, что информация о номере оборудования отсутствует в приведенном выше xml-файле .
Это должно быть извлечено из соответствующего номера оборудования из файла. xlsx (где поле equipment no сопоставляется со столбцом SSNAME.device.devicename.pointtype в файле .xlsx, как прилагается).
Нам нужно прочитать существующий xml-файл и прочитать информацию "SSNAME.device.devicename.pointtype" из
& lt;triggerdata> высокое предупреждение.abcd.Области.xy2.SSNAME.устройства.имя_устройства.pointtype=40.00 статус=реальный тег,
поиск в equipment_map.xlsx лист и найти оборудование № от того же.
Этого оборудования нет. должен быть помечен под <equipment_number> 1234567890.
Тег & lt;state> должен быть удален из преобразованного xml-файла .
Теперь нам нужно отделить следующую информацию от,
& lt;triggerdata> высокое предупреждение.abcd.Области.xy2.SSNAME.устройства.имя_устройства.pointtype=40.00 статус=Реал
и разделите информацию, как показано ниже.
<Substation>SSNAME</Substation> <DeviceType>device</DeviceType> <Device>devicename</Device>.
Наконец, информация должна быть сброшена в новый xml-файл в следующем месте.
c:\converted_xml\ .
Итак, наконец, новый xml-файл будет выглядеть следующим образом.
<Event> <Equipment_Number>1234567890</Equipment_Number> <AlarmText>High Warning</Alarmtext> <StartDate>5/26/2017 5:10:00 PM</StartDate> <EndDate>5/26/2017 5:14:30 PM</EndDate> <Substation>SSNAME</Substation> <DeviceType>device</DeviceType> <Device>devicename</Device>. </Event>
Может ли кто-нибудь помочь мне в этом отношении?
Исходный xml-файл выглядит следующим образом.
<?xml version="1.0"?> -<Email> <To>abcd@pqrst.com</To> <Cc/> <Bcc/> <Subject>HighAlarm</Subject> <Message>HighAlarmtarun</Message> <Event> <State>High Warning</State> <StartDate>5/26/2017 5:10:00 PM</StartDate> <EndDate>5/26/2017 5:14:30 PM</EndDate> <TriggerData>High Warning.abcd.Region.xy2.SSNAME1.device1.devicename1.pointtype1=40.00 status=real </TriggerData> </Event>
Приведенный выше файл должен быть преобразован в,
<Event> <Equipment_Number>1234567890</Equipment_Number> <AlarmText>High Warning</Alarmtext> <StartDate>5/26/2017 5:10:00 PM</StartDate> <EndDate>5/26/2017 5:14:30 PM</EndDate> <Substation>SSNAME1</Substation> <DeviceType>device1</DeviceType> <Device>devicename1</Device>. </Event>
----------------------------------------------
То
equipment_map.xlsxфайл содержит следующие сведения.
SL. No Equipment Name Equipment ID 1 SSNAME1.device1.devicename1.pointtype1 1234567890 2 SSNAME2.device2.devicename2.pointtype2 11213141516 3 SSNAME3.device3.devicename3.pointtype3 17181920212223
Другой xml-файл содержит следующую информацию, как сгенерированную, а третий и так далее.
--------------------------------------------------------
2-ой один,
<?xml version="1.0"?> -<Email> <To>abcd@pqrst.com</To> <Cc/> <Bcc/> <Subject>HighAlarm</Subject> <Message>HighAlarmtarun</Message> <Event> <State>High Warning</State> <StartDate>5/26/2017 5:20:00 PM</StartDate> <EndDate>5/26/2017 5:25:30 PM</EndDate> <TriggerData>High Warning.abcd.Region.xy2.SSNAME2.device2.devicename2.pointtype2=40.00 status=Good </TriggerData> </Event>
третий .............................
-----------------------------------------------------------------------------
Я не могу прикрепить каталог.Однако каталог наполняется новыми XML-файлов, когда они автоматически сгенерирован каким-либо приложением, как и когда происходят некоторые события в системе.&ЛТ;событие&ГТ; тег изображает событие.
Что я уже пробовал:
Попытался прочитать файл с помощью класса xmlreader.
[no name]
"Может ли кто-нибудь помочь мне в этом отношении", поскольку у нас нет ваших XML-файлов, ваших файлов Excel, вашего кода или чего-либо еще, чего вы ожидаете от нас в плане помощи, специфичной для написанного вами кода?
Member 12708425
Извиняюсь.Я был в поисках прикрепления файлов со структурой каталогов.Но не в состоянии сделать так.Затем я скопировал файлы в самом вопросе.
[no name]
И что же? Здесь нет ни одной строки кода C#, в которой вы пытались бы сделать свою работу самостоятельно, прежде чем пытаться заставить людей сделать это за вас.
Member 12708425
Код попытался.
-----------------
использование системы;
использование системы.Коллекции.Общий;
использование System. Linq;
используя системы.Текст;
использование системы.Нарезание резьбы.Задачи;
использование System.Xml;
пространство имен ConsoleApplication3
{
программа занятий
{
static void Main (string[] args)
{
XmlDocument doc = новый XmlDocument();
док. нагрузка("C:\\Users\\xxxx\\Desktop\\xml file\\xyz_present.xml");
// цикл через каждый файл
// цикл через каждого ребенка noed
по каждому элементу (узлу руководство в формате doc.Функцию documentelement.ChildNodes)
{
// первый узел-это url-адрес ... нужно перейти к следующему узлу loc
foreach (XmlNode locNode в узле)
{
// здесь есть пара дочерних узлов, поэтому берите данные только из узла с именем loc
if (locNode.Имя = = " TriggerData")
{
// показать содержимое узла запирания
строка loc = locNode.Через свойство innerText;
string[] words = loc.Расщеплять('.');
foreach (строка s в словах)
{
Приставка.WriteLine(s + Environment. NewLine);
}
// запишите его на консоль, чтобы вы могли видеть, как он работает
Приставка.WriteLine(loc + Environment. NewLine);
}
}
}
Приставка.Линия чтения();
}
}
}
Но это только для того, чтобы разделить строку на строки.Как отдельно атрибутировать тег и создать тег & lt;root>?
Member 12708425
Я загрузил такую часть кода,что попробовал. Можете ли вы взглянуть на то же самое?