Từ xem cửa sổ sự kiện tôi có thể nhận được các cấu trúc xml sau:Deserialize chuỗi XML để Object Lỗi: Có một lỗi trong tài liệu 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>
Tôi chỉ quan tâm đến phần EventData của xml. Tôi đã tạo ra các lớp học rất đơn giản sau đây:
public class Event
{
public EventData EventData;
}
public class EventData
{
public String[] Data;
}
sau đó tôi sử dụng đoạn mã sau:
XmlSerializer serializer = new XmlSerializer(typeof(Event));
StringReader reader = new StringReader(evtXml);
evt = (Event)serializer.Deserialize(reader);
nhưng trên dòng đầu tiên của mã, tôi nhận được lỗi sau:
There is an error in XML document (1, 2).
Lỗi này không mang tính thông tin đối với tôi. Là vấn đề mà tôi không có tất cả các lĩnh vực trong các lớp học hoặc tôi cần một số lớp khác (ngoài XmlSerializer) để có được dữ liệu từ. Con đường tôi muốn các dữ liệu dưới EventData là theo tên và giá trị dữ liệu (ví dụ name1 với data1) ... vv
EDIT quan trọng: xml Tôi nhận được tạo ra theo phương pháp ToXML() của các EventRecord lớp
Cảm ơn
Tài liệu XML * không * hợp lệ - hãy xem thẻ 'Message':' một số thông báo '. Nếu đây không phải là XML thực của bạn, vui lòng bao gồm một đoạn XML ngắn nhưng đầy đủ để chứng minh cùng một vấn đề. –
@JonSkeet: Tôi nhận được xml từ toXML() phương thức của lớp Event Record –
tại sao phương thức này http://msdn.microsoft.com/en-us/library/system.diagnostics.eventing.reader.eventrecord.toxml .aspx return bad xml –