The Labs \ Source Viewer \ SSCLI \ System.Xml \ XmlWhitespace

  1. //------------------------------------------------------------------------------
  2. // <copyright file="XmlWhitespace.cs" company="Microsoft">
  3. //
  4. // Copyright (c) 2006 Microsoft Corporation. All rights reserved.
  5. //
  6. // The use and distribution terms for this software are contained in the file
  7. // named license.txt, which can be found in the root of this distribution.
  8. // By using this software in any fashion, you are agreeing to be bound by the
  9. // terms of this license.
  10. //
  11. // You must not remove this notice, or any other, from this software.
  12. //
  13. // </copyright>
  14. //------------------------------------------------------------------------------
  15. namespace System.Xml
  16. {
  17.     using System;
  18.     using System.Xml.XPath;
  19.     using System.Text;
  20.     using System.Diagnostics;
  21.    
  22.     // Represents the text content of an element or attribute.
  23.     public class XmlWhitespace : XmlCharacterData
  24.     {
  25.         protected internal XmlWhitespace(string strData, XmlDocument doc) : base(strData, doc)
  26.         {
  27.             if (!doc.IsLoading && !base.CheckOnData(strData))
  28.                 throw new ArgumentException(Res.GetString(Res.Xdom_WS_Char));
  29.         }
  30.        
  31.         // Gets the name of the node.
  32.         public override string Name {
  33.             get { return OwnerDocument.strNonSignificantWhitespaceName; }
  34.         }
  35.        
  36.         // Gets the name of the current node without the namespace prefix.
  37.         public override string LocalName {
  38.             get { return OwnerDocument.strNonSignificantWhitespaceName; }
  39.         }
  40.        
  41.         // Gets the type of the current node.
  42.         public override XmlNodeType NodeType {
  43.             get { return XmlNodeType.Whitespace; }
  44.         }
  45.        
  46.         public override XmlNode ParentNode {
  47.             get {
  48.                 switch (parentNode.NodeType) {
  49.                     case XmlNodeType.Document:
  50.                         return base.ParentNode;
  51.                     case XmlNodeType.Text:
  52.                     case XmlNodeType.CDATA:
  53.                     case XmlNodeType.Whitespace:
  54.                     case XmlNodeType.SignificantWhitespace:
  55.                         XmlNode parent = parentNode.parentNode;
  56.                         while (parent.IsText) {
  57.                             parent = parent.parentNode;
  58.                         }
  59.                         return parent;
  60.                     default:
  61.                         return parentNode;
  62.                 }
  63.             }
  64.         }
  65.        
  66.         public override string Value {
  67.             get { return Data; }
  68.            
  69.             set {
  70.                 if (CheckOnData(value))
  71.                     Data = value;
  72.                 else
  73.                     throw new ArgumentException(Res.GetString(Res.Xdom_WS_Char));
  74.             }
  75.         }
  76.        
  77.         // Creates a duplicate of this node.
  78.         public override XmlNode CloneNode(bool deep)
  79.         {
  80.             Debug.Assert(OwnerDocument != null);
  81.             return OwnerDocument.CreateWhitespace(Data);
  82.         }
  83.        
  84.         // Saves the node to the specified XmlWriter.
  85.         public override void WriteTo(XmlWriter w)
  86.         {
  87.             w.WriteWhitespace(Data);
  88.         }
  89.        
  90.         // Saves all the children of the node to the specified XmlWriter.
  91.         public override void WriteContentTo(XmlWriter w)
  92.         {
  93.             // Intentionally do nothing
  94.         }
  95.        
  96.         internal override XPathNodeType XPNodeType {
  97.             get {
  98.                 XPathNodeType xnt = XPathNodeType.Whitespace;
  99.                 DecideXPNodeTypeForTextNodes(this, ref xnt);
  100.                 return xnt;
  101.             }
  102.         }
  103.        
  104.         internal override bool IsText {
  105.             get { return true; }
  106.         }
  107.        
  108.         internal override XmlNode PreviousText {
  109.             get {
  110.                 if (parentNode.IsText) {
  111.                     return parentNode;
  112.                 }
  113.                 return null;
  114.             }
  115.         }
  116.     }
  117. }

Developer Fusion