예제 #1
0
	public void GenerateOutput(BuildItem buildItem, Stream outputStream, IDictionary<string, Stream> inputFormatStreams, string defaultNamespace)
	{
		outputStream = new UncloseableStream(outputStream);
		Stream undeadOial = inputFormatStreams["UndeadOIAL"];
		Stream liveOial = inputFormatStreams["LiveOIAL"];

		XmlDiff xmlDiff = new XmlDiff(XmlDiffOptions.IgnoreComments | XmlDiffOptions.IgnoreXmlDecl | XmlDiffOptions.IgnorePrefixes);

		xmlDiff.Algorithm = XmlDiffAlgorithm.Precise;

		bool identical = false;

		MemoryStream diffgram = new MemoryStream(8192);

		using (XmlWriter diffgramWriter = XmlWriter.Create(diffgram))
		{
			try
			{
				using (XmlReader undeadReader = XmlReader.Create(undeadOial, XmlReaderSettings), liveReader = XmlReader.Create(liveOial, XmlReaderSettings))
				{
					identical = xmlDiff.Compare(undeadReader, liveReader, diffgramWriter);
				}
			}
			finally
			{
				undeadOial.Seek(0, SeekOrigin.Begin);
				liveOial.Seek(0, SeekOrigin.Begin);
			}
		}

		// Files have been compared, and the diff has been written to the diffgramwriter.

		TextWriter resultHtml = new StreamWriter(outputStream);
		resultHtml.WriteLine("<html><head>");
		resultHtml.WriteLine("<style TYPE='text/css' MEDIA='screen'>");
		resultHtml.Write("<!-- td { font-family: Courier New; font-size:14; } " +
							"th { font-family: Arial; } " +
							"p { font-family: Arial; } -->");
		resultHtml.WriteLine("</style></head>");
		resultHtml.WriteLine("<body><h3 style='font-family:Arial'>XmlDiff view</h3><table border='0'><tr><td><table border='0'>");
		resultHtml.WriteLine("<tr><th>Undead OIAL</th><th>Live OIAL</th></tr>" +
							"<tr><td colspan=2><hr size=1></td></tr>");

		if (identical)
		{
			resultHtml.WriteLine("<tr><td colspan='2' align='middle'>Files are identical.</td></tr>");
		}
		else
		{
			resultHtml.WriteLine("<tr><td colspan='2' align='middle'>Files are different.</td></tr>");
		}

		diffgram.Seek(0, SeekOrigin.Begin);
		XmlDiffView xmlDiffView = new XmlDiffView();

		XmlTextReader sourceReader = new XmlTextReader(undeadOial);

		sourceReader.XmlResolver = null;

		xmlDiffView.Load(sourceReader, new XmlTextReader(diffgram));

		xmlDiffView.GetHtml(resultHtml);

		resultHtml.WriteLine("</table></table></body></html>");

		resultHtml.Flush();
		resultHtml.Close();
	}
예제 #2
0
    public void GenerateOutput(BuildItem buildItem, Stream outputStream, IDictionary <string, Stream> inputFormatStreams, string defaultNamespace)
    {
        outputStream = new UncloseableStream(outputStream);
        Stream undeadOial = inputFormatStreams["UndeadOIAL"];
        Stream liveOial   = inputFormatStreams["LiveOIAL"];

        XmlDiff xmlDiff = new XmlDiff(XmlDiffOptions.IgnoreComments | XmlDiffOptions.IgnoreXmlDecl | XmlDiffOptions.IgnorePrefixes);

        xmlDiff.Algorithm = XmlDiffAlgorithm.Precise;

        bool identical = false;

        MemoryStream diffgram = new MemoryStream(8192);

        using (XmlWriter diffgramWriter = XmlWriter.Create(diffgram))
        {
            try
            {
                using (XmlReader undeadReader = XmlReader.Create(undeadOial, XmlReaderSettings), liveReader = XmlReader.Create(liveOial, XmlReaderSettings))
                {
                    identical = xmlDiff.Compare(undeadReader, liveReader, diffgramWriter);
                }
            }
            finally
            {
                undeadOial.Seek(0, SeekOrigin.Begin);
                liveOial.Seek(0, SeekOrigin.Begin);
            }
        }

        // Files have been compared, and the diff has been written to the diffgramwriter.

        TextWriter resultHtml = new StreamWriter(outputStream);

        resultHtml.WriteLine("<html><head>");
        resultHtml.WriteLine("<style TYPE='text/css' MEDIA='screen'>");
        resultHtml.Write("<!-- td { font-family: Courier New; font-size:14; } " +
                         "th { font-family: Arial; } " +
                         "p { font-family: Arial; } -->");
        resultHtml.WriteLine("</style></head>");
        resultHtml.WriteLine("<body><h3 style='font-family:Arial'>XmlDiff view</h3><table border='0'><tr><td><table border='0'>");
        resultHtml.WriteLine("<tr><th>Undead OIAL</th><th>Live OIAL</th></tr>" +
                             "<tr><td colspan=2><hr size=1></td></tr>");

        if (identical)
        {
            resultHtml.WriteLine("<tr><td colspan='2' align='middle'>Files are identical.</td></tr>");
        }
        else
        {
            resultHtml.WriteLine("<tr><td colspan='2' align='middle'>Files are different.</td></tr>");
        }

        diffgram.Seek(0, SeekOrigin.Begin);
        XmlDiffView xmlDiffView = new XmlDiffView();

        XmlTextReader sourceReader = new XmlTextReader(undeadOial);

        sourceReader.XmlResolver = null;

        xmlDiffView.Load(sourceReader, new XmlTextReader(diffgram));

        xmlDiffView.GetHtml(resultHtml);

        resultHtml.WriteLine("</table></table></body></html>");

        resultHtml.Flush();
        resultHtml.Close();
    }