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

xml/soap/webservice

开发平台:

Visual C++

  1. //  ---------------------------------------------------------------------------
  2. // <copyright company="Microsoft Corporation" file="XmlDiffViewAttribute.cs">
  3. //     Copyright (c) Microsoft Corporation 2005
  4. // </copyright>
  5. // <project>
  6. //     XmlDiffView
  7. // </project>
  8. // <summary>
  9. //     Manages the output for viewing changes in xml attributes.
  10. // </summary>
  11. // <history>
  12. //      [barryw] 03MAR05 Created
  13. // </history>
  14. //  ---------------------------------------------------------------------------
  15. namespace Microsoft.XmlDiffPatch
  16. {
  17.     #region Using directives
  18.     using System;
  19.     using System.IO;
  20.     using System.Xml;
  21.     // Diagnostics is used for trace and debug.
  22.     using System.Diagnostics;
  23.     #endregion
  24.     /// <summary>
  25.     /// Class the manage the output for viewing xml attributes.
  26.     /// </summary>
  27.     internal class XmlDiffViewAttribute : XmlDiffViewNode
  28.     {
  29.         #region Member variables section
  30.         /// <summary>
  31.         /// Declares a variation to store the
  32.         /// xml prefix value (without the colon).
  33.         /// </summary>
  34.         private string prefix;
  35.         /// <summary>
  36.         /// Declares a variation to store the node's localName
  37.         /// (the name without the prefix).
  38.         /// </summary>
  39.         /// <remarks>prefix + ":" + localName = name;</remarks>
  40.         private string localName;
  41.         /// <summary>
  42.         /// Declares a variation to store the node's full name.
  43.         /// </summary>
  44.         /// <remarks>the localName with the prefix and colon separator</remarks>
  45.         private string name;
  46.         /// <summary>
  47.         /// Declares a variation to store the
  48.         /// xml namespaceUri value.
  49.         /// </summary>
  50.         private string namespaceUri;
  51.         /// <summary>
  52.         /// Declares a variation to store the
  53.         /// xml attribute value.
  54.         /// </summary>
  55.         private string attributeValue;
  56.         #endregion
  57.         
  58.         #region  Constructors section
  59.         /// <summary>
  60.         /// Alternative constructor
  61.         /// </summary>
  62.         /// <param name="localName">Attribute name without prefix</param>
  63.         /// <param name="prefix">Attribute prefix</param>
  64.         /// <param name="ns">Namespace URI</param>
  65.         /// <param name="name">Attribute name including prefix</param>
  66.         /// <param name="attributeValue">the attribute's value</param>
  67.         public XmlDiffViewAttribute(
  68.             string localName,
  69.             string prefix,
  70.             string ns,
  71.             string name,
  72.             string attributeValue) : base(XmlNodeType.Attribute)
  73.         {
  74.             this.LocalName = localName;
  75.             this.Prefix = prefix;
  76.             this.NamespaceUri = ns;
  77.             this.AttributeValue = attributeValue;
  78.             this.Name = name;
  79.         }
  80.         /// <summary>
  81.         /// Constructor.
  82.         /// </summary>
  83.         /// <param name="localName">Attribute name without prefix</param>
  84.         /// <param name="prefix">Attribute prefix</param>
  85.         /// <param name="ns">Namespace URI</param>
  86.         /// <param name="attributeValue">the attribute's value</param>
  87.         internal XmlDiffViewAttribute(
  88.             string localName,
  89.             string prefix,
  90.             string ns,
  91.             string attributeValue) 
  92.             : base(XmlNodeType.Attribute)
  93.         {
  94.             this.LocalName = localName;
  95.             this.Prefix = prefix;
  96.             this.NamespaceUri = ns;
  97.             this.AttributeValue = attributeValue;
  98.             if (prefix == string.Empty)
  99.             {
  100.                 this.Name = this.LocalName;
  101.             }
  102.             else
  103.             {
  104.                 this.Name = prefix + ":" + this.LocalName;
  105.             }
  106.         }
  107.         #endregion
  108.         
  109.         #region Properties section
  110.         /// <summary>
  111.         /// Gets or sets the attribute's value.
  112.         /// </summary>
  113.         public string AttributeValue
  114.         {
  115.             get
  116.             {
  117.                 return this.attributeValue;
  118.             }
  119.             set
  120.             {
  121.                 this.attributeValue = value;
  122.             }
  123.         }
  124.         /// <summary>
  125.         /// Gets or sets the xml node prefix (without the semi-colon) 
  126.         /// </summary>
  127.         /// <example>xls</example>
  128.         public string Prefix
  129.         {
  130.             get
  131.             {
  132.                 return this.prefix;
  133.             }
  134.             set
  135.             {
  136.                 this.prefix = value;
  137.             }
  138.         }
  139.         /// <summary>
  140.         /// Gets or sets the node name with, if present,
  141.         /// a prefix
  142.         /// </summary>
  143.         /// <example>xls:mynode</example>
  144.         public string Name
  145.         {
  146.             get
  147.             {
  148.                 return this.name;
  149.             }
  150.             set
  151.             {
  152.                 this.name = value;
  153.             }
  154.         }
  155.         /// <summary>
  156.         /// Gets or sets the node name without a prefix.
  157.         /// </summary>
  158.         /// <example>mynode</example>
  159.         public string LocalName
  160.         {
  161.             get
  162.             {
  163.                 return this.localName;
  164.             }
  165.             set
  166.             {
  167.                 this.localName = value;
  168.             }
  169.         }
  170.         /// <summary>
  171.         /// Gets or sets the namespace Uniform 
  172.         /// Resource Identifier (URI).
  173.         /// </summary>
  174.         public string NamespaceUri
  175.         {
  176.             get
  177.             {
  178.                 return this.namespaceUri;
  179.             }
  180.             set
  181.             {
  182.                 this.namespaceUri = value;
  183.             }
  184.         }
  185.         /// <summary>
  186.         /// Returns the string representing the attribute name
  187.         /// and its value.
  188.         /// </summary>
  189.         public override string OuterXml
  190.         {
  191.             get
  192.             {
  193.                 string outerXml = string.Empty;
  194.                 if (this.Prefix != string.Empty)
  195.                 {
  196.                     outerXml = this.Prefix + ":";
  197.                 }
  198.                 outerXml += this.LocalName + "="" +
  199.                     RemoveTabsAndNewlines(this.attributeValue) + """;
  200.                 return outerXml;
  201.             }
  202.         }
  203.         #endregion
  204.         
  205.         #region Methods section
  206.         /// <summary>
  207.         /// Gets a complete copy of the current attribute.
  208.         /// </summary>
  209.         /// <param name="deep">deprecated</param>
  210.         /// <returns>an attribute object</returns>
  211.         internal override XmlDiffViewNode Clone(bool deep)
  212.         {
  213.             //barryw 3/14/2005 Corrected parameter order to fix 
  214.             //                 empty Name bug.
  215.             return new XmlDiffViewAttribute(
  216.                 this.LocalName, 
  217.                 this.Prefix, 
  218.                 this.NamespaceUri, 
  219.                 this.Name, 
  220.                 this.AttributeValue);
  221.         }
  222.         /// <summary>
  223.         /// Override for the method to add this node's data 
  224.         /// to the output stream. This method should never 
  225.         /// be called from this object.
  226.         /// </summary>
  227.         /// <param name="writer">output stream</param>
  228.         /// <param name="indent">size of indent</param>
  229.         [Obsolete("This method should never be called", true)]
  230.         internal override void DrawHtml(XmlWriter writer, int indent)
  231.         {
  232.             throw new Exception("This method should never be called.");
  233.         }
  234.         /// <summary>
  235.         /// Override for the method to add this node's data 
  236.         /// in text form to the output stream. This method 
  237.         /// should never be called from this object.
  238.         /// </summary>
  239.         /// <param name="writer">output stream</param>
  240.         /// <param name="indent">size of indent</param>
  241.         [Obsolete("This method should never be called", true)]
  242.         internal override void DrawText(TextWriter writer, int indent)
  243.         {
  244.             throw new Exception("This method should never be called.");
  245.         }
  246.         #endregion
  247.          
  248.     }
  249. }