De visor de sucesos de Windows que puedo conseguir la siguiente estructura XML:cadena XML Deserialize al objeto de error: Hay un error en el documento XML (1,2)
<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>
Sólo estoy interesado en la sección de EventData el xml He creado las siguientes clases muy sencillo:
public class Event
{
public EventData EventData;
}
public class EventData
{
public String[] Data;
}
Luego utilizo el siguiente código:
XmlSerializer serializer = new XmlSerializer(typeof(Event));
StringReader reader = new StringReader(evtXml);
evt = (Event)serializer.Deserialize(reader);
pero en la primera línea de código, me sale el siguiente error:
There is an error in XML document (1, 2).
Este error no me es informativo. Es el problema de que no tengo todos los campos en las clases o necesito alguna otra clase (aparte de XmlSerializer) para obtener los datos. La forma me gustaría que los datos bajo el EventData es por su nombre y valor de los datos (por ejemplo, nombre1 con datos1) ... etc
EDITAR Importante: el xml que estoy recibiendo es generado por el método de ToXML() los EventRecord clase
Gracias
bien el documento XML * * no es válida - mirar la etiqueta de 'message':' algún mensaje '. Si este no es su XML real, incluya una pieza breve pero completa de XML que demuestre el mismo problema. –
@JonSkeet: Obtengo el xml del método XML de la clase de registro de eventos –
por qué este método http://msdn.microsoft.com/en-us/library/system.diagnostics.eventing.reader.eventrecord.toxml .aspx return bad xml –