Класс для XmlSerializer - C#
Формулировка задачи:
Здравствуйте, суть задачи. Надо написать класс который описывает xml файл с заданной структурой.
Xml файл имеет структуру
Класс
и метод
Добраться до информации которая находиться во вложенных тегах в теге <System> получается, а вот описать теги в <EventData> не получается.
Листинг программы
- <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
- <System>
- <Provider Name="Microsoft-Windows-Security-Auditing" Guid="{54849625-5478-4994-A5BA-3E3B0328C30D}" />
- <EventID>4660</EventID>
- <Version>0</Version>
- <Level>0</Level>
- <Task>12800</Task>
- <Opcode>0</Opcode>
- <Keywords>0x8020000000000000</Keywords>
- <TimeCreated SystemTime="2014-12-17T10:21:58.239809400Z" />
- <EventRecordID>249985872</EventRecordID>
- <Correlation />
- <Execution ProcessID="4" ThreadID="8196" />
- <Channel>Security</Channel>
- <Computer>2CSERVER.avangard.karat-e.ru</Computer>
- <Security />
- </System>
- <EventData>
- <Data Name="SubjectUserSid">S-1-5-21-91203979-249081657-904295806-6183</Data>
- <Data Name="SubjectUserName">UserName</Data>
- <Data Name="SubjectDomainName">AVANGARD</Data>
- <Data Name="SubjectLogonId">0x900b919</Data>
- <Data Name="ObjectServer">Security</Data>
- <Data Name="HandleId">0x44a4</Data>
- <Data Name="ProcessId">0x4</Data>
- <Data Name="ProcessName">
- </Data>
- <Data Name="TransactionId">{00000000-0000-0000-0000-000000000000}</Data>
- </EventData>
- </Event>
Листинг программы
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Diagnostics.Eventing.Reader;
- using System.Security;
- using System.Xml;
- using System.Xml.Serialization;
- using System.IO;
- using System.Reflection;
- namespace Events3
- {
- // Хорошая попытка была
- [XmlRoot(ElementName = "Event", Namespace = "http://schemas.microsoft.com/win/2004/08/events/event")]
- public class Event
- {
- [XmlElement(ElementName = "System")]
- public System System;
- [XmlElement(ElementName="EventData")]
- public EventData EventData;
- }
- public class System
- {
- [XmlElement(ElementName = "EventID")]
- public int EventID;
- [XmlElement(ElementName="EventRecordID")]
- public double EventRecordID;
- }
- public class EventData
- {
- [XmlElement(ElementName = "Data")]
- public Data[] Data;
- }
- public class Data
- {
- [XmlAttribute(AttributeName = "Name")]
- public string Name;
- [XmlElement(ElementName = "Data")]
- public string Dt;
- public string name
- {
- get { return Name; }
- set { Name = value; }
- }
- }
Листинг программы
- public void ReadDocument(string filename)
- {
- XmlSerializer serializer = new XmlSerializer(typeof(Event));
- FileStream fs = new FileStream(filename, FileMode.Open);
- Event ev;
- ev = (Event)serializer.Deserialize(fs);
- fs.Close();
- Console.Write(ev.System.EventID + "\n");
- Console.Write(ev.System.EventRecordID + "\n");
- // Console.Write(ev.EventData.Data + "\n");
- Data[] Dts = ev.EventData.Data;
- foreach (Data dt in Dts)
- {
- Console.WriteLine(ev.EventData.Data + "\n");
- }
- }
Решение задачи: «Класс для XmlSerializer»
textual
Листинг программы
- XmlSerializer serializer = new XmlSerializer(typeof(EventElement));
- EventElement ev;
- using (FileStream fs = new FileStream(filename, FileMode.Open))
- {
- ev = (EventElement)serializer.Deserialize(fs);
- }
- Console.WriteLine(ev.System.EventId);
- Console.WriteLine(ev.System.EventRecordId);
- foreach (DataElement dt in ev.EventData)
- {
- Console.WriteLine("{0} = {1}", dt.Name, dt.Value);
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д