Von Windows-Ereignisanzeige kann ich die folgende XML-Struktur erhalten:Deserialize XML-String-Fehler Objekt: Es ist ein Fehler in XML-Dokument (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>
ich nur daran interessiert bin in dem Eventdata Abschnitt das XML. Ich habe die folgenden sehr einfachen Klassen erstellt:
public class Event
{
public EventData EventData;
}
public class EventData
{
public String[] Data;
}
ich dann den folgenden Code verwenden:
XmlSerializer serializer = new XmlSerializer(typeof(Event));
StringReader reader = new StringReader(evtXml);
evt = (Event)serializer.Deserialize(reader);
aber auf der ersten Zeile des Codes, bekomme ich folgende Fehlermeldung:
There is an error in XML document (1, 2).
Dieser Fehler ist für mich nicht informativ. Ist das Problem, dass ich nicht alle Felder in den Klassen habe oder brauche ich eine andere Klasse (außer XmlSerializer), um die Daten abzurufen. Die Art, wie ich die Daten unter dem Eventdata möchte ist mit Namen und Daten Wert (zB name1 mit data1) ... etc
Wichtige EDIT: die xml Ich erhalte durch die ToXML() Verfahren erzeugt die EventRecord Klasse
Dank
Nun das XML-Dokument * nicht * gültig - Blick auf dem 'Message' tag:' einig Nachricht '. Wenn dies nicht Ihr richtiger XML-Code ist, fügen Sie bitte ein kurzes, aber vollständiges XML-Dokument ein, das das gleiche Problem darstellt. –
@JonSkeet: Ich bekomme die xml von toXML() -Methode der Ereignis Record-Klasse –
Warum würde diese Methode http://msdn.microsoft.com/en-us/library/system.diagnostics.eventing.reader.eventrecord.toxml .aspx return bad xml –