this can be solve by below steps,
string FindXMLDiff(string oldXmlString, string newXmlString, out string xmlDiff)
{
string htmlOut = string.Empty;
xmlDiff = "";
System.IO.StringReader oldString = new System.IO.StringReader(oldXmlString);
System.IO.StringReader newString = new System.IO.StringReader(newXmlString);
System.Xml.XmlReader oldEReader = System.Xml.XmlReader.Create(oldString);
System.Xml.XmlReader newEReader = System.Xml.XmlReader.Create(newString);
XmlDiffView dv = new XmlDiffView();
using (MemoryStream diffFileStream = new MemoryStream())
{
XmlTextWriter tw = new XmlTextWriter(new StreamWriter(diffFileStream));
tw.Formatting = Formatting.Indented;
XmlDiff diff = new XmlDiff(XmlDiffOptions.IgnoreChildOrder |
XmlDiffOptions.IgnoreNamespaces |
XmlDiffOptions.IgnorePrefixes |
XmlDiffOptions.IgnoreDtd |
XmlDiffOptions.IgnoreWhitespace);
bool isEqual = false;
try
{
isEqual = diff.Compare(oldEReader, newEReader, tw);
}
catch (XmlException xe)
{
}
finally
{
tw.Flush();
diffFileStream.Position = 0;
}
System.Xml.XmlTextReader orgReader = new System.Xml.XmlTextReader(new System.IO.StringReader(oldXmlString));
XmlTextReader diffGram = new XmlTextReader(diffFileStream);
dv.Load(orgReader,
diffGram);
orgReader.Close();
diffGram.Close();
}
using (MemoryStream htmlStream = new MemoryStream())
{
StreamWriter sw1 = new StreamWriter(htmlStream);
sw1.Write("<html><body><table style="font-family:verdana; font-size:12">");
sw1.Write("<tr><td>Legend: <font style="background-color: yellow" hold=" /> " color="black">added</font> <font style="background-color: red" hold=" /> " color="black">removed</font> <font style="background-color: " +<br mode="hold" /> "lightgreen" color="black">changed</font>" +
"</td><td><font style="background-color: red" color="blue">moved from</font>" +
" <font style="background-color: yellow" color="blue">moved to" +
"</font> <font style="background-color: white" color="#AAAAAA">" + "ignored</font></td></tr>");
sw1.Write("<tr><td>Old");
sw1.Write("</td><td>New");
sw1.Write("</td></tr>");
dv.GetHtml(sw1);
sw1.Write("</table></body></html>");
sw1.Flush();
htmlStream.Position = 0;
using (StreamReader sr = new StreamReader(htmlStream))
{
htmlOut = sr.ReadToEnd();
}
}
dv = null;
oldString.Close();
newString.Close();
oldEReader.Close();
newEReader.Close();
return htmlOut;
}