コード例 #1
0
        internal override void DrawHtml(XmlWriter writer, int indent)
        {
            if (_op == XmlDiffViewOperation.Change)
            {
                XmlDiffViewOperation nameOp  = (_name == _changeInfo._localName) ? XmlDiffViewOperation.Match : XmlDiffViewOperation.Change;
                XmlDiffViewOperation valueOp = (_value == _changeInfo._value) ? XmlDiffViewOperation.Match : XmlDiffViewOperation.Change;

                XmlDiffView.HtmlStartRow(writer);
                XmlDiffView.HtmlStartCell(writer, indent);

                XmlDiffView.HtmlWriteString(writer, "<?");
                XmlDiffView.HtmlWriteString(writer, nameOp, _name);
                XmlDiffView.HtmlWriteString(writer, " ");
                XmlDiffView.HtmlWriteString(writer, valueOp, _value);
                XmlDiffView.HtmlWriteString(writer, "?>");

                XmlDiffView.HtmlEndCell(writer);
                XmlDiffView.HtmlStartCell(writer, indent);

                XmlDiffView.HtmlWriteString(writer, "<?");
                XmlDiffView.HtmlWriteString(writer, nameOp, _changeInfo._localName);
                XmlDiffView.HtmlWriteString(writer, " ");
                XmlDiffView.HtmlWriteString(writer, valueOp, _changeInfo._value);
                XmlDiffView.HtmlWriteString(writer, "?>");

                XmlDiffView.HtmlEndCell(writer);
                XmlDiffView.HtmlEndRow(writer);
            }
            else
            {
                DrawHtmlNoChange(writer, indent);
            }
        }
コード例 #2
0
        /// <summary>
        /// Writes out an HTML file showing any differecnes between the two specified files.
        /// </summary>
        /// <param name="expectedXmlFile">The "expected" or "source" XML file used in the comparison.</param>
        /// <param name="actualXmlFile">The "actual" or "changed" XML file used in the comparison.</param>
        /// <param name="bIdentical">True if the two files were found to be identical.</param>
        /// <param name="xmlDiffGram">The xml DiffGram from the XmlDiff tool describing the differences between the two files.</param>
        /// <param name="resultHtmlViewFile">The path and name of the HTML file this function should save.</param>
        internal static void WriteHtmlDiffViewFile(string expectedXmlFile, string actualXmlFile, bool bIdentical, string xmlDiffGram, string resultHtmlViewFile)
        {
            // Write HTML View File:
            TextWriter resultHtml = new StreamWriter(new FileStream(resultHtmlViewFile, FileMode.Create, FileAccess.Write));

            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>" + expectedXmlFile + "</th><th>" + actualXmlFile + "</th></tr>" + "<tr><td colspan=2><hr size=1></td></tr>");
            if (bIdentical)
            {
                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>");
            }

            var masterReader = new XmlTextReader(expectedXmlFile);
            var xmlDiffView  = new XmlDiffView.XmlDiffView();

            masterReader.XmlResolver = null;
            xmlDiffView.Load(masterReader, new XmlTextReader(new StringReader(xmlDiffGram)));

            xmlDiffView.GetHtml(resultHtml);
            masterReader.Close();

            resultHtml.WriteLine("</table></table></body></html>");
            resultHtml.Close();
        }
コード例 #3
0
        internal override void DrawHtml(XmlWriter writer, int indent)
        {
            if (_op == XmlDiffViewOperation.Change)
            {
                Debug.Assert(_name != _changeInfo._localName);

                XmlDiffView.HtmlStartRow(writer);
                XmlDiffView.HtmlStartCell(writer, indent);

                XmlDiffView.HtmlWriteString(writer, "&");
                XmlDiffView.HtmlWriteString(writer, XmlDiffViewOperation.Change, _name);
                XmlDiffView.HtmlWriteString(writer, ";");

                XmlDiffView.HtmlEndCell(writer);
                XmlDiffView.HtmlStartCell(writer, indent);

                XmlDiffView.HtmlWriteString(writer, "&");
                XmlDiffView.HtmlWriteString(writer, XmlDiffViewOperation.Change, _changeInfo._localName);
                XmlDiffView.HtmlWriteString(writer, ";");

                XmlDiffView.HtmlEndCell(writer);
                XmlDiffView.HtmlEndRow(writer);
            }
            else
            {
                DrawHtmlNoChange(writer, indent);
            }
        }
コード例 #4
0
 internal void DrawHtmlNoChange(XmlWriter writer, int indent)
 {
     Debug.Assert(_nodeType != XmlNodeType.Element && _nodeType != XmlNodeType.Attribute);
     Debug.Assert(_op != XmlDiffViewOperation.Change);
     XmlDiffView.HtmlStartRow(writer);
     for (int i = 0; i < 2; i++)
     {
         XmlDiffView.HtmlStartCell(writer, indent);
         if (XmlDiffView.HtmlWriteToPane[(int)_op, i])
         {
             bool bCloseElement = OutputNavigation(writer);
             XmlDiffView.HtmlWriteString(writer, _op, OuterXml);
             if (bCloseElement)
             {
                 writer.WriteEndElement();
             }
         }
         else
         {
             XmlDiffView.HtmlWriteEmptyString(writer);
         }
         XmlDiffView.HtmlEndCell(writer);
     }
     XmlDiffView.HtmlEndRow(writer);
 }
コード例 #5
0
        private void DrawHtmlAttributeChange(XmlWriter writer, XmlDiffViewAttribute attr, string localName, string prefix, string value)
        {
            if (prefix != string.Empty)
            {
                XmlDiffView.HtmlWriteString(writer,
                                            _ignorePrefixes ? XmlDiffViewOperation.Ignore :
                                            (attr._prefix == attr._changeInfo._prefix) ? XmlDiffViewOperation.Match : XmlDiffViewOperation.Change,
                                            prefix + ":");
            }

            XmlDiffView.HtmlWriteString(writer,
                                        (attr._localName == attr._changeInfo._localName) ? XmlDiffViewOperation.Match : XmlDiffViewOperation.Change,
                                        localName);

            if (attr._value != attr._changeInfo._value)
            {
                XmlDiffView.HtmlWriteString(writer, "=\"");
                XmlDiffView.HtmlWriteString(writer, XmlDiffViewOperation.Change, value);
                XmlDiffView.HtmlWriteString(writer, "\"");
            }
            else
            {
                XmlDiffView.HtmlWriteString(writer, "=\"" + value + "\"");
            }
        }
コード例 #6
0
        private static void WriteHtmlDiffViewFile(XmlReader expectedDocumentReader, bool bIdentical, string xmlDiffGram, string resultHtmlFile)
        {
            // Write HTML View File:
            TextWriter resultHtml = new StreamWriter(new FileStream(resultHtmlFile, FileMode.Create, FileAccess.Write));

            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>" + "ExpectedOutput Style File" + "</th><th>" + "ActualOutput Style File" + "</th></tr>" + "<tr><td colspan=2><hr size=1></td></tr>");

            resultHtml.WriteLine(bIdentical
                                ? "<tr><td colspan='2' align='middle'>Files are identical.</td></tr>"
                                : "<tr><td colspan='2' align='middle'>Files are different.</td></tr>");

            var xmlDiffView = new QaKit.FileComparer.XML.XmlDiffView.XmlDiffView();

            xmlDiffView.Load(expectedDocumentReader, new XmlTextReader(new StringReader(xmlDiffGram)));

            xmlDiffView.GetHtml(resultHtml);
            expectedDocumentReader.Close();

            resultHtml.WriteLine("</table></table></body></html>");
            resultHtml.Close();
        }
コード例 #7
0
        private void DrawHtmlAttributes(XmlWriter writer, int paneNo)
        {
            if (_attributes == null)
            {
                return;
            }

            string attrIndent = string.Empty;

            if (_attributes._nextSibbling != null)
            {
                attrIndent = XmlDiffView.GetIndent(_name.Length + 2);
            }
            XmlDiffViewAttribute curAttr = _attributes;

            while (curAttr != null)
            {
                if (XmlDiffView.HtmlWriteToPane[(int)curAttr._op, paneNo])
                {
                    if (curAttr == _attributes)
                    {
                        writer.WriteString(" ");
                    }
                    else
                    {
                        writer.WriteRaw(attrIndent);
                    }

                    if (curAttr._op == XmlDiffViewOperation.Change)
                    {
                        if (paneNo == 0)
                        {
                            DrawHtmlAttributeChange(writer, curAttr, curAttr._localName, curAttr._prefix, curAttr._value);
                        }
                        else
                        {
                            DrawHtmlAttributeChange(writer, curAttr, curAttr._changeInfo._localName, curAttr._changeInfo._prefix,
                                                    curAttr._changeInfo._value);
                        }
                    }
                    else
                    {
                        DrawHtmlAttribute(writer, curAttr, curAttr._op);
                    }
                }
                else
                {
                    XmlDiffView.HtmlWriteEmptyString(writer);
                }

                curAttr = (XmlDiffViewAttribute)curAttr._nextSibbling;
                if (curAttr != null)
                {
                    XmlDiffView.HtmlBr(writer);
                }
            }
        }
コード例 #8
0
        internal override void DrawHtml(XmlWriter writer, int indent)
        {
            if (_op == XmlDiffViewOperation.Change)
            {
                string openString  = string.Empty;
                string closeString = string.Empty;
                if (_nodeType == XmlNodeType.CDATA)
                {
                    openString  = "<!CDATA[";
                    closeString = "]]>";
                }
                else if (_nodeType == XmlNodeType.Comment)
                {
                    openString  = "<!--";
                    closeString = "-->";
                }

                XmlDiffView.HtmlStartRow(writer);
                XmlDiffView.HtmlStartCell(writer, indent);
                if (openString != string.Empty)
                {
                    XmlDiffView.HtmlWriteString(writer, openString);
                    XmlDiffView.HtmlWriteString(writer, XmlDiffViewOperation.Change, _value);
                    XmlDiffView.HtmlWriteString(writer, closeString);
                }
                else
                {
                    XmlDiffView.HtmlWriteString(writer, XmlDiffViewOperation.Change, _value);
                }

                XmlDiffView.HtmlEndCell(writer);
                XmlDiffView.HtmlStartCell(writer, indent);

                if (openString != string.Empty)
                {
                    XmlDiffView.HtmlWriteString(writer, openString);
                    XmlDiffView.HtmlWriteString(writer, XmlDiffViewOperation.Change, _changeInfo._value);
                    XmlDiffView.HtmlWriteString(writer, closeString);
                }
                else
                {
                    XmlDiffView.HtmlWriteString(writer, XmlDiffViewOperation.Change, _changeInfo._value);
                }

                XmlDiffView.HtmlEndCell(writer);
                XmlDiffView.HtmlEndRow(writer);
            }
            else
            {
                DrawHtmlNoChange(writer, indent);
            }
        }
コード例 #9
0
 private void DrawHtmlName(XmlWriter writer, XmlDiffViewOperation opForColor, string tagStart, string tagEnd)
 {
     if (_prefix != string.Empty && _ignorePrefixes)
     {
         XmlDiffView.HtmlWriteString(writer, opForColor, tagStart);
         XmlDiffView.HtmlWriteString(writer, XmlDiffViewOperation.Ignore, _prefix + ":");
         XmlDiffView.HtmlWriteString(writer, opForColor, _localName + tagEnd);
     }
     else
     {
         XmlDiffView.HtmlWriteString(writer, opForColor, tagStart + _name + tagEnd);
     }
 }
コード例 #10
0
        private void DrawHtmlNameChange(XmlWriter writer, string localName, string prefix)
        {
            if (prefix != string.Empty)
            {
                XmlDiffView.HtmlWriteString(writer, _ignorePrefixes ? XmlDiffViewOperation.Ignore :
                                            (_prefix == _changeInfo._prefix) ? XmlDiffViewOperation.Match : XmlDiffViewOperation.Change,
                                            prefix + ":");
            }

            XmlDiffView.HtmlWriteString(writer,
                                        (_localName == _changeInfo._localName) ? XmlDiffViewOperation.Match : XmlDiffViewOperation.Change,
                                        localName);
        }
コード例 #11
0
        private void DrawHtmlAttribute(XmlWriter writer, XmlDiffViewAttribute attr, XmlDiffViewOperation opForColor)
        {
            if (_ignorePrefixes)
            {
                if (attr._prefix == "xmlns" || (attr._localName == "xmlns" && attr._prefix == string.Empty))
                {
                    XmlDiffView.HtmlWriteString(writer, XmlDiffViewOperation.Ignore, attr._name);
                    XmlDiffView.HtmlWriteString(writer, opForColor, "=\"" + attr._value + "\"");
                    return;
                }
                else if (attr._prefix != string.Empty)
                {
                    XmlDiffView.HtmlWriteString(writer, XmlDiffViewOperation.Ignore, attr._prefix + ":");
                    XmlDiffView.HtmlWriteString(writer, opForColor, attr._localName + "=\"" + attr._value + "\"");
                    return;
                }
            }

            XmlDiffView.HtmlWriteString(writer, opForColor, attr._name + "=\"" + attr._value + "\"");
        }
コード例 #12
0
        internal override void DrawHtml(XmlWriter writer, int indent)
        {
            if (_op == XmlDiffViewOperation.Change)
            {
                XmlDiffView.HtmlStartRow(writer);
                for (int i = 0; i < 2; i++)
                {
                    XmlDiffView.HtmlStartCell(writer, indent);
                    // name
                    XmlDiffView.HtmlWriteString(writer, XmlDiffViewOperation.Match, "<!DOCTYPE ");
                    if (i == 0)
                    {
                        XmlDiffView.HtmlWriteString(writer, (_name == _changeInfo._localName) ? XmlDiffViewOperation.Match : XmlDiffViewOperation.Change, _name);
                    }
                    else
                    {
                        XmlDiffView.HtmlWriteString(writer, (_name == _changeInfo._localName) ? XmlDiffViewOperation.Match : XmlDiffViewOperation.Change, _changeInfo._localName);
                    }

                    XmlDiffView.HtmlWriteString(writer, XmlDiffViewOperation.Match, " ");

                    string systemString = "SYSTEM ";
                    // public id
                    if (_publicId == _changeInfo._prefix)
                    {
                        // match
                        if (_publicId != string.Empty)
                        {
                            XmlDiffView.HtmlWriteString(writer, XmlDiffViewOperation.Match, "PUBLIC \"" + _publicId + "\" ");
                            systemString = string.Empty;
                        }
                    }
                    else
                    {
                        // add
                        if (_publicId == string.Empty)
                        {
                            if (i == 1)
                            {
                                XmlDiffView.HtmlWriteString(writer, XmlDiffViewOperation.Add, "PUBLIC \"" + _changeInfo._prefix + "\" ");
                                systemString = string.Empty;
                            }
                        }
                        // remove
                        else if (_changeInfo._prefix == string.Empty)
                        {
                            if (i == 0)
                            {
                                XmlDiffView.HtmlWriteString(writer, XmlDiffViewOperation.Remove, "PUBLIC \"" + _publicId + "\" ");
                                systemString = string.Empty;
                            }
                        }
                        // change
                        else
                        {
                            XmlDiffView.HtmlWriteString(writer, XmlDiffViewOperation.Change, "PUBLIC \"" + ((i == 0) ? _publicId : _changeInfo._prefix) + "\" ");
                            systemString = string.Empty;
                        }
                    }

                    // system id
                    if (_systemId == _changeInfo._ns)
                    {
                        if (_systemId != string.Empty)
                        {
                            XmlDiffView.HtmlWriteString(writer, XmlDiffViewOperation.Match, systemString + "\"" + _systemId + "\" ");
                        }
                    }
                    else
                    {
                        // add
                        if (_systemId == string.Empty)
                        {
                            if (i == 1)
                            {
                                XmlDiffView.HtmlWriteString(writer, XmlDiffViewOperation.Add, systemString + "\"" + _changeInfo._ns + "\" ");
                            }
                        }
                        // remove
                        else if (_changeInfo._prefix == string.Empty)
                        {
                            if (i == 0)
                            {
                                XmlDiffView.HtmlWriteString(writer, XmlDiffViewOperation.Remove, systemString + "\"" + _systemId + "\" ");
                            }
                        }
                        // change
                        else
                        {
                            XmlDiffView.HtmlWriteString(writer, XmlDiffViewOperation.Change, systemString + "\"" + ((i == 0) ? _systemId : _changeInfo._ns) + "\" ");
                        }
                    }

                    // internal subset
                    if (_subset == _changeInfo._value)
                    {
                        if (_subset != string.Empty)
                        {
                            XmlDiffView.HtmlWriteString(writer, XmlDiffViewOperation.Match, "[" + _subset + "]");
                        }
                    }
                    else
                    {
                        // add
                        if (_subset == string.Empty)
                        {
                            if (i == 1)
                            {
                                XmlDiffView.HtmlWriteString(writer, XmlDiffViewOperation.Add, "[" + _changeInfo._value + "]");
                            }
                        }
                        // remove
                        else if (_changeInfo._value == string.Empty)
                        {
                            if (i == 0)
                            {
                                XmlDiffView.HtmlWriteString(writer, XmlDiffViewOperation.Remove, "[" + _subset + "]");
                            }
                        }
                        // change
                        else
                        {
                            XmlDiffView.HtmlWriteString(writer, XmlDiffViewOperation.Change, "[" + ((i == 0) ? _subset : _changeInfo._value) + "]");
                        }
                    }

                    // close start tag
                    XmlDiffView.HtmlWriteString(writer, XmlDiffViewOperation.Match, ">");
                    XmlDiffView.HtmlEndCell(writer);
                }
                XmlDiffView.HtmlEndRow(writer);
            }
            else
            {
                DrawHtmlNoChange(writer, indent);
            }
        }
コード例 #13
0
        internal override void DrawHtml(XmlWriter writer, int indent)
        {
            XmlDiffViewOperation opForColor = _op;
            bool bCloseElement = false;

            XmlDiffView.HtmlStartRow(writer);
            for (int i = 0; i < 2; i++)
            {
                XmlDiffView.HtmlStartCell(writer, indent);
                if (XmlDiffView.HtmlWriteToPane[(int)_op, i])
                {
                    bCloseElement = OutputNavigation(writer);

                    if (_op == XmlDiffViewOperation.Change)
                    {
                        opForColor = XmlDiffViewOperation.Match;
                        XmlDiffView.HtmlWriteString(writer, opForColor, "<");
                        if (i == 0)
                        {
                            DrawHtmlNameChange(writer, _localName, _prefix);
                        }
                        else
                        {
                            DrawHtmlNameChange(writer, _changeInfo._localName, _changeInfo._prefix);
                        }
                    }
                    else
                    {
                        DrawHtmlName(writer, opForColor, "<", string.Empty);
                    }

                    if (bCloseElement)
                    {
                        writer.WriteEndElement();
                        bCloseElement = false;
                    }

                    // attributes
                    DrawHtmlAttributes(writer, i);

                    // close start tag
                    if (_childNodes != null)
                    {
                        XmlDiffView.HtmlWriteString(writer, opForColor, ">");
                    }
                    else
                    {
                        XmlDiffView.HtmlWriteString(writer, opForColor, "/>");
                    }
                }
                else
                {
                    XmlDiffView.HtmlWriteEmptyString(writer);
                }
                XmlDiffView.HtmlEndCell(writer);
            }
            XmlDiffView.HtmlEndRow(writer);

            // child nodes
            if (_childNodes != null)
            {
                HtmlDrawChildNodes(writer, indent + XmlDiffView.DeltaIndent);

                // end element
                XmlDiffView.HtmlStartRow(writer);
                for (int i = 0; i < 2; i++)
                {
                    XmlDiffView.HtmlStartCell(writer, indent);
                    if (XmlDiffView.HtmlWriteToPane[(int)_op, i])
                    {
                        if (_op == XmlDiffViewOperation.Change)
                        {
                            Debug.Assert(opForColor == XmlDiffViewOperation.Match);
                            XmlDiffView.HtmlWriteString(writer, opForColor, "</");
                            if (i == 0)
                            {
                                DrawHtmlNameChange(writer, _localName, _prefix);
                            }
                            else
                            {
                                DrawHtmlNameChange(writer, _changeInfo._localName, _changeInfo._prefix);
                            }
                            XmlDiffView.HtmlWriteString(writer, opForColor, ">");
                        }
                        else
                        {
                            DrawHtmlName(writer, opForColor, "</", ">");
                        }
                    }
                    else
                    {
                        XmlDiffView.HtmlWriteEmptyString(writer);
                    }
                    XmlDiffView.HtmlEndCell(writer);
                }
                XmlDiffView.HtmlEndRow(writer);
            }
        }