Skip to content

Instantly share code, notes, and snippets.

@Benrnz
Created February 25, 2009 02:14
Show Gist options
  • Save Benrnz/69946 to your computer and use it in GitHub Desktop.
Save Benrnz/69946 to your computer and use it in GitHub Desktop.
///<summary>Deserialise an xml file into a type instance with event
///validation using lambda expressions.
///</summary>
public static void ReadFromTestDataXmlFile() {
// Read serialised metadata describing the service and methods to call
var serializer = new XmlSerializer(typeof(TestJobList));
var stream = new FileStream("TestData.xml", FileMode.Open);
var reader = XmlReader.Create(stream);
var events = new XmlDeserializationEvents() {
OnUnknownAttribute = (o, e) => Logger.Log("Unknown attribute found {0}, line {1} at char {2}",
e.Attr.ToString(),
e.LineNumber.ToString(),
e.LinePosition.ToString()),
OnUnknownElement = (o, e) => Logger.Log("Unknown element found {0}, line {1} at char {2}",
e.Element.ToString(),
e.LineNumber.ToString(),
e.LinePosition.ToString()),
OnUnknownNode = (o, e) => Logger.Log("Unknown node found {0}, line {1} at char {2} with inner text: {3}",
e.Name,
e.LineNumber.ToString(),
e.LinePosition.ToString(),
e.Text),
OnUnreferencedObject = (o, e) => Logger.Log("Unreferenced object found {0}", e.UnreferencedObject.ToString())
};
var jobList = (TestJobList) serializer.Deserialize(reader, events);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment