1 //------------------------------------------------------------------------------
2 // <copyright file="XmlCDATASection.cs" company="Microsoft">
3 // Copyright (c) Microsoft Corporation. All rights reserved.
5 // <owner current="true" primary="true">Microsoft</owner>
6 //------------------------------------------------------------------------------
11 using System.Diagnostics;
12 using System.Xml.XPath;
14 // Used to quote or escape blocks of text to keep that text from being
15 // interpreted as markup language.
16 public class XmlCDataSection : XmlCharacterData {
17 protected internal XmlCDataSection( string data, XmlDocument doc ): base( data, doc ) {
20 // Gets the name of the node.
21 public override String Name {
23 return OwnerDocument.strCDataSectionName;
27 // Gets the name of the node without the namespace prefix.
28 public override String LocalName {
30 return OwnerDocument.strCDataSectionName;
34 // Gets the type of the current node.
35 public override XmlNodeType NodeType {
37 return XmlNodeType.CDATA;
41 public override XmlNode ParentNode {
43 switch (parentNode.NodeType) {
44 case XmlNodeType.Document:
46 case XmlNodeType.Text:
47 case XmlNodeType.CDATA:
48 case XmlNodeType.Whitespace:
49 case XmlNodeType.SignificantWhitespace:
50 XmlNode parent = parentNode.parentNode;
51 while (parent.IsText) {
52 parent = parent.parentNode;
61 // Creates a duplicate of this node.
62 public override XmlNode CloneNode(bool deep) {
63 Debug.Assert( OwnerDocument != null );
64 return OwnerDocument.CreateCDataSection( Data );
67 // Saves the node to the specified XmlWriter.
68 public override void WriteTo(XmlWriter w) {
72 // Saves the node to the specified XmlWriter.
73 public override void WriteContentTo(XmlWriter w) {
74 // Intentionally do nothing
77 internal override XPathNodeType XPNodeType {
79 return XPathNodeType.Text;
83 internal override bool IsText {
89 public override XmlNode PreviousText {
91 if (parentNode.IsText) {