Я пытаюсь прочитать журнал событий, сохраненный в виде XML-файла из .Net / C #, формат XML журнала событий выглядит (приблизительно) так:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Events>
<Event xmlns='http://schemas.microsoft.com/win/2004/08/events/event'>...</Event>
<Event xmlns='http://schemas.microsoft.com/win/2004/08/events/event'>...</Event>
</Events>
Где бит ...
представляет собой относительно сложную серию типов, определенных в файле схемы event.xsd .
Я планировал использовать XSD.exe , чтобы сгенерировать тип оболочки C # для чтения этого XML-файла журнала событий из этого файла схемы, а затем десериализовать XML с помощью класса XmlSerializer
вот так:
using (FileStream stream = File.OpenRead(filename))
{
XmlSerializer serialiser = new XmlSerializer(typeof(Events));
return (Events)serialiser.Deserialize(stream);
}
Проблема в том, что файл схемы не содержит определения для элемента Events
(потому что его нет в схеме), и поэтому вышеприведенное не компилируется, так как нет типа Events
.
Я пробовал несколько вариантов, включая использование типа EventType[]
вместо Events
(что привело к исключению "не ожидалось".). Я также пытаюсь создать свой собственный контейнер C # Events
, тип:
public class Events
{
[XmlElement]
public EventType[] Items
{
get;
set;
}
}
Однако приведенное выше просто приводит к тому, что массив Items
равен нулю.
Как я могу прочитать журналы событий, сохраненные в формате XML из C #?