XMLCDataSection

XmlCDataSection类描述XML数据中的CDATA节。CDATA节在XML数据中的作用是为文本内容定义引号和转义符,即XML解析器不解析CDATA中的任何字符。

XmlCDataSection类提供XML数据中CDATA 节的结构描述和操作方法。该类继承于System.Xml命名空间的XmlCharactorData类,也是由XmlNode类派生出来的。根据XML数据中CDATA节的特点,XmlCDataSection不能嵌套,也不能包含子节点,所以其从XmlNode类继承而来的对于子节点的操作方法不具有实际的意义。

XmlCDataSection类的作用是为XML数据建立CDATA节。在XML文档中有些数据是包含有特殊字符的,如“when price>35”中的“>”符号。如果直接将这些字符作为文本块赋予一个元素或者属性,就会引起XML解析器的解析错误。为了避免出现特殊符号影响XML数据的解析,有必要将包含特殊符号的数据使用CDATA节来标记。在实际的应用中,加密后的数据经常会包含特殊的字符,为了确保能够正确地解析加密数据,使用CDATA来保护数据,就可以无须编写复杂的转义解析,而能确保数据的安全传递。

XmlCDataSection类继承于XmlNode,是后者实例父节点的一个子节点。因此只能通过访问包含该类实例的父节点的子节点列表中读取CDATA数据,而不能直接读取。

 

语法定义:

public class XmlCDataSection : XmlCharacterData

因为XmlCDataSection类的构造函数是受保护的,所以不能使用其创建XmlCDataSectioin类的实例。一般采用的做法是在XmlDocument类实例中,使用CreateCDataSection方法来创建XmlCDataSection类的实例。下面的代码演示了如何使用XmlDocument类实例建立XmlCDataSection类的实例。

XmlDocument doc = new XmlDocument();  
  
//使用XmlDocument类的CreateCDataSection方法创建XmlCDataSection类实例  
  
XmlCDataSection cdata= doc.CreateCDataSection("when price>35");

 


方法:

XmlCDataSection类虽然包含了XmlNode中的子节点方法,但在XML数据结构中的元素属性不具备子节点所有这些方法并无实际意义。另外大部分操作XmlCDataSection类的方法已经在该类所属的XmlElement中实现了。对于XmlCDataSection类本身,主要的方法如表:

AppendData:在节点字符数据的结尾追加指定的字符串。

Clone:创建此节点的一个副本

 

附上两个XML操作方法:

 

      /// <summary>
        /// 取出节点值
        /// </summary>
        /// <param name="xmlPath">xml url</param>
        /// <param name="Node">root/test</param>
        /// <returns></returns>
        public static string[] XmlGetHtmlCode(string xmlPath,string Node)
        {
            XmlDocument objXmlDoc = new XmlDocument();
            objXmlDoc.Load(xmlPath);
 
            XmlNodeList elemList = objXmlDoc.GetElementsByTagName(Node);
            string[] arraw = new string[elemList.Count];
            for (int i = 0; i < elemList.Count; i++)
            {
                arraw[i] = elemList[i].InnerXml.ToString().Replace("<![CDATA[", "").Replace("]]>", ""); ;
            }
 
            return arraw;
        }

 

/// <summary>
        /// 插入一节点不带属性,节点值为<![CDATA[
        /// </summary>
        /// <param name="xmlPath">xml url</param>
        /// <param name="MainNode">root/test</param>
        /// <param name="Element">text1</param>
        /// <param name="Content">节点内容</param>
        public static void XmlInsertHtmlCode(string xmlPath, string MainNode, string Element, string Content)
        {
            XmlDocument objXmlDoc = new XmlDocument();
            objXmlDoc.Load(xmlPath);
            XmlNode objNode = objXmlDoc.SelectSingleNode(MainNode);
            XmlElement objElement = objXmlDoc.CreateElement(Element);
            XmlCDataSection CData;
            CData = objXmlDoc.CreateCDataSection(Content);
            objElement.AppendChild(CData);
            objNode.AppendChild(objElement);
            objXmlDoc.Save(xmlPath);
        }

 

posted @ 2014-03-16 19:02  蓝雨天  阅读(1735)  评论(0编辑  收藏  举报