XmlDiffViewResults.cs
上传用户:hbhltzc
上传日期:2022-06-04
资源大小:1925k
文件大小:7k
源码类别:

xml/soap/webservice

开发平台:

Visual C++

  1. //  ---------------------------------------------------------------------------
  2. // <copyright company="Microsoft Corporation" file="XmlDiffViewResults.cs">
  3. //     Copyright (c) Microsoft Corporation 2005
  4. // </copyright>
  5. // <project>
  6. //     XmlDiffView
  7. // </project>
  8. // <summary>
  9. //     Provides access the results.
  10. // </summary>
  11. // <history>
  12. //      [barryw] 31MAR05 Created
  13. // </history>
  14. //  ---------------------------------------------------------------------------
  15. namespace Microsoft.XmlDiffPatch
  16. {
  17.     #region Using directives
  18.     using System;
  19.     using System.IO;
  20.     #endregion
  21.     #region Results Class
  22.     /// -----------------------------------------------------------------------------
  23.     /// <summary>
  24.     /// Class to provide access the results.
  25.     /// </summary>
  26.     /// <history>
  27.     ///  [barryw] 31MAR05 Created again.
  28.     /// </history>
  29.     /// -----------------------------------------------------------------------------
  30.     public class XmlDiffViewResults
  31.     {
  32.         #region  Member variables section
  33.         /// <summary>
  34.         /// Holds the comparison data locally.
  35.         /// </summary>
  36.         private TextReader reader = null;
  37.         /// <summary>
  38.         /// Holds the value which indicates the 
  39.         /// baseline and actual data are identical.
  40.         /// </summary>
  41.         private bool identicalData = false;
  42.         #endregion
  43.         #region  Constructors section
  44.         /// <summary>
  45.         /// Constructor
  46.         /// </summary>
  47.         /// <param name="data">detailed results of the comparison</param>
  48.         /// <param name="identical">summary result if the 
  49.         /// comparison, value is 'true' if there were no 
  50.         /// differences found.</param>
  51.         internal XmlDiffViewResults(
  52.             MemoryStream data,
  53.             bool identical)
  54.         {
  55.             this.reader = this.PopulateReader(ref data);
  56.             this.identicalData = identical;
  57.         }
  58.         #endregion
  59.         #region  Properties section
  60.         /// <summary>
  61.         /// Gets the value which indicates whether differences were found.
  62.         /// </summary>
  63.         /// <value>the xml data are identical.</value>
  64.         public bool Identical
  65.         {
  66.             get
  67.             {
  68.                 return this.identicalData;
  69.             }
  70.         }
  71.         
  72.         #endregion
  73.         #region  Methods section
  74.         /// <summary>Reads the next character without changing the state of the reader or the character source. Returns the next available character without actually reading it from the input stream.</summary>
  75.         /// <returns>The next character to be read, or -1 if no more characters are available or the stream does not support seeking.</returns>
  76.         public int Peek()
  77.         {
  78.             return this.reader.Peek();
  79.         }
  80.         /// <summary>Reads a maximum of count characters from the current
  81.         /// stream and writes the data to buffer, beginning at index.
  82.         /// </summary>
  83.         /// <returns>The number of characters that have been read. The number
  84.         /// will be less than or equal to count, depending on whether the 
  85.         /// data is available within the stream. This method returns zero if 
  86.         /// called when no more characters are left to read.</returns>
  87.         /// <param name="count">The maximum number of characters to read. If 
  88.         /// the end of the stream is reached before count of characters is 
  89.         /// read into buffer, the current method returns. </param>
  90.         /// <param name="buffer">When this method returns, contains the 
  91.         /// specified character array with the values between index and 
  92.         /// (index + count - 1) replaced by the characters read from the 
  93.         /// current source. </param>
  94.         /// <param name="index">The place in buffer at which to begin writing.
  95.         /// </param>
  96.         public int Read(char[] buffer, int index, int count)
  97.         {
  98.             return this.reader.Read(buffer, index, count);
  99.         }
  100.         /// <summary>Reads the next character from the input stream and 
  101.         /// advances the character position by one character.</summary>
  102.         /// <returns>The next character from the input stream, or -1 if no 
  103.         /// more characters are available. The default implementation returns
  104.         /// -1.</returns>
  105.         public int Read()
  106.         {
  107.             return this.reader.Read();
  108.         }
  109.         /// <summary>Reads a maximum of count characters from the current 
  110.         /// stream and writes the data to buffer, beginning at index.</summary>
  111.         /// <returns>The number of characters that have been read. The number 
  112.         /// will be less than or equal to count, depending on whether all 
  113.         /// input characters have been read.</returns>
  114.         /// <param name="count">The maximum number of characters to read. 
  115.         /// </param>
  116.         /// <param name="buffer">When this method returns, this parameter 
  117.         /// contains the specified character array with the values between 
  118.         /// index and (index + count -1) replaced by the characters read from 
  119.         /// the current source. </param>
  120.         /// <param name="index">The place in buffer at which to begin writing.
  121.         /// </param>
  122.         public int ReadBlock(char[] buffer, int index, int count)
  123.         {
  124.             return this.reader.ReadBlock(buffer, index, count);
  125.         }
  126.         /// <summary>Reads a line of characters from the current stream and 
  127.         /// returns the data as a string.</summary>
  128.         /// <returns>The next line from the input stream, or null if all 
  129.         /// characters have been read.</returns>
  130.         public string ReadLine()
  131.         {
  132.             return this.reader.ReadLine();
  133.         }
  134.         /// <summary>Reads all characters from the current position to the 
  135.         /// end of the TextReader and returns them as one string.</summary>
  136.         /// <returns>A string containing all characters from the current 
  137.         /// position to the end of the TextReader.</returns>
  138.         public string ReadToEnd()
  139.         {
  140.             return this.reader.ReadToEnd();
  141.         }
  142.         /// <summary>
  143.         /// Returns the underlying populated basestream of a 
  144.         /// TextWriter objectdata as a TextReader object 
  145.         /// re-positioned to the beginning of the data stream.
  146.         /// </summary>
  147.         /// <param name="data">reference to the data in memory</param>
  148.         /// <returns>the Textreader object</returns>
  149.         private TextReader PopulateReader(ref MemoryStream data)
  150.         {
  151.             StreamReader sr = null;
  152.             sr = new StreamReader(
  153.                 data,
  154.                 System.Text.Encoding.Unicode);
  155.             // Set the StreamReader file pointer to the beginning.
  156.             sr.BaseStream.Seek(0, SeekOrigin.Begin);
  157.             return sr;
  158.         }
  159.         #endregion
  160.     }
  161.     #endregion
  162. }