微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将XMLstring反序列化为对象错误:xml文档中存在错误1,2

从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] 举报,一经查实,本站将立刻删除。

相关推荐