Member 12708425 Ответов: 1

Синтаксический анализ 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

Я загрузил такую часть кода,что попробовал. Можете ли вы взглянуть на то же самое?

1 Ответов

Рейтинг:
2

Kornfeld Eliyahu Peter

Воспользуйся XmlDocument[^] с язык XPath[^] или язык XSLT[^]...