从Windows事件查看器我可以得到以下的XML结构:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event"> <System> <Provider Name="XXXXXXXXXX" Guid="{YYYYYYYY}" /> <EventID>XYZ</EventID> <Version>0</Version> <Level>L</Level> <Task>A</Task> <Opcode>0</Opcode> <Keywords>0x000xyzh</Keywords> <TimeCreated SystemTime="2012-06-28T15:44:04.997837000Z" /> <EventRecordID>153</EventRecordID> <Correlation ActivityID="{ddddddddD}" /> <Execution ProcessID="199999" ThreadID="90990" /> <Channel>Microsoft-Windows-ABCDEFG/Admin</Channel> <Computer>myPC</Computer> <Security UserID="ABCABC" /> </System> <EventData> <Data Name="name1">data1</Data> <Data Name="name2">data2</Data> <Data Name="name3">data3</Data> </EventData> <RenderingInfo Culture="en-US"> <Message>some message </Message> <Level>@R_31_4045@ion</Level> <Task>XYZ</Task> <Opcode>Info</Opcode> <Channel /> <Provider /> <Keywords> <Keyword>XYZ</Keyword> </Keywords> </RenderingInfo> </Event>
我只对xml的EventData部分感兴趣。 我创build了以下非常简单的类:
public class Event { public EventData EventData; } public class EventData { public String[] Data; }
然后我使用下面的代码:
XmlSerializer serializer = new XmlSerializer(typeof(Event)); StringReader reader = new StringReader(evtXml); evt = (Event)serializer.Deserialize(reader);
如何监视.Net应用程序的跟踪输出?
具有挂在GetContext()上的SSL证书的HttpListener
我如何皮肤我的Windows窗体应用程序?
Windows使用哪种开源的面向文档的数据库系统最为成熟?
在Windows 10上避免使用Convert.Todouble('Infinity')的FormatException
There is an error in XML document (1,2).
这个错误对我来说不是信息。 问题是我没有在类中的所有字段,或者我需要一些其他类(除了XmlSerializer)来从中获取数据。 我想在EventData下的数据的方式是名称和数据值(例如name1与data1)…等
重要编辑 :我得到的XML是由EventRecord类的ToXML()方法生成的
谢谢
exe_common.inl中的非法指令
SetFilePointerEx API来读取MFT
64位.Net应用程序中的内存限制?
重命名正在运行的程序 – 危险
在.NET中编写虚拟打印机
XmlSerializer serializer = new XmlSerializer(typeof(Event),"http://schemas.microsoft.com/win/2004/08/events/event"); StringReader reader = new StringReader(evtXml); var evt = (Event)serializer.Deserialize(reader);
public class Event { public Data[] EventData; } public class Data { [XmlAttribute] public string Name; [XmlText] public string Value; }
XmlSerializer经常告诉你什么是遮罩; 添加一些错误处理,具体为:
try { // your code } catch(Exception ex) { while(ex != null) { Console.WriteLine(ex.Message); ex = ex.InnerException; } }
我猜这是一个命名空间问题; 尝试:
[XmlRoot("Event",Namespace="http://schemas.microsoft.com/win/2004/08/events/event")] public class Event {...}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。