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); }