Skip to content

Instantly share code, notes, and snippets.

@krcourville
Created October 10, 2013 17:16
Show Gist options
  • Select an option

  • Save krcourville/6922112 to your computer and use it in GitHub Desktop.

Select an option

Save krcourville/6922112 to your computer and use it in GitHub Desktop.
XmlDiff Code Sample
void Main()
{
var contact = new Contact{
FirstName = "John",
LastName = "Smith"
};
var sourceXml = ToXml(contact);
contact.LastName = "Changed";
var targetXml = ToXml(contact);
var table = GetChangeHtml(sourceXml,targetXml);
var html = string.Format("<html><body><table>{0}</table></body></html>",table);
File.WriteAllText(@"\test.html",html);
Process.Start(@"\test.html");
}
string ToXml<T>(T o){
var serializer = new XmlSerializer(typeof(T));
var writer = new StringWriter();
serializer.Serialize(writer,o);
return writer.ToString();
}
string GetChangeHtml(string xmlSource, string xmlChanged){
var sourceReader = XmlReader.Create( new StringReader(xmlSource));
var changedReader = XmlReader.Create( new StringReader(xmlChanged));
var diffgram = new StringWriter();
var diffgramwriter = XmlWriter.Create(diffgram);
var xmlDiff = new XmlDiff();
xmlDiff.Compare(sourceReader,changedReader, diffgramwriter);
var view = new XmlDiffView();
sourceReader = XmlReader.Create(new StringReader(xmlSource));
view.Load(sourceReader,XmlReader.Create( new StringReader(diffgram.ToString())));
var htmlwriter =new StringWriter();
view.GetHtml(htmlwriter);
return htmlwriter.ToString();
}
// Define other methods and classes here
public class Contact
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment