c# - 将 XML 字符串反序列化为对象错误 : There is an Error in xml document (1, 2)

标签 c# .net windows xml-serialization xmlserializer

从 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>Information</Level> 
  <Task>XYZ</Task> 
  <Opcode>Info</Opcode> 
  <Channel /> 
  <Provider /> 
  <Keywords>
  <Keyword>XYZ</Keyword> 
  </Keywords>
</RenderingInfo>
</Event>

我只对 xml 的 EventData 部分感兴趣。我创建了以下非常简单的类:

   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);

但是在第一行代码中,我得到了以下错误:

XML 文档 (1, 2) 中存在错误。

这个错误对我来说没有意义。问题是我没有类中的所有字段,还是我需要一些其他类(XmlSerializer 除外)来从中获取数据。我想要 EventData 下的数据的方式是按名称和数据值(例如 name1 和 data1)...等等

重要编辑: 我得到的 xml 是由 ToXML() 生成的EventRecord 的方法类

谢谢

最佳答案

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;
}

关于c# - 将 XML 字符串反序列化为对象错误 : There is an Error in xml document (1, 2),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11250992/

相关文章:

.net - 有没有办法多次执行一个方法,但管理连接/线程? (。网)

c# - 为什么使用 IList 而不是 IEnumerable?

windows - Windows 上的 symfony2 assetics yui 压缩器(路径语法)

windows - mfc 应用程序中的 "binary was not built with debug information "警告含义?

c# - 可移动自定义控件

c# - Fluent NHibernate 或 NHibernate 用于具有复杂关系的复杂数据库

c# - 将异步结果返回给事件

Azure 上的 .Net CryptographicException "Object already exists"

.net - 在 .NET 中获取通用桌面路径

c# - 本地 IIS 上跨子域的表单例份验证