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

XMLCDataSection的更多相关文章

  1. .NET微信公众号开发-4.0公众号消息处理

    一.前言 微信公众平台的消息处理还是比较完善的,有最基本的文本消息,到图文消息,到图片消息,语音消息,视频消息,音乐消息其基本原理都是一样的,只不过所post的xml数据有所差别,在处理消息之前,我们 ...

  2. 经典C#编程理解,概要,经典

    一.NET框架 ADO.NET微软提供的一组类库,可以帮助程序员和数据库交互. CLS(公共语言规范) CTS(通用语言类型) 类库: 可以看成一个承载了N个类的容器. 类库和命名空间: 一个类库对应 ...

  3. 简介C#读取XML的两种方式

    简介C#读取XML的两种方式 作者: 字体:[增加 减小] 类型:转载 时间:2013-03-03 在程序中访问进而操作XML文件一般有两种模型,分别是使用DOM(文档对象模型)和流模型,使用DOM的 ...

  4. c# 图片XML序列化与反序列化

    var xmlDoc = new XmlDocument(); xmlDoc.Load(@"C:\Users\*\Desktop\*.xml"); ].ChildNodes[]; ...

  5. 在.NET2.0中解析Json和Xml

    在.NET解析json有很多方法,这里介绍最简单也用的最多的一种. 一.添加引用 解析Json,先下载开源控件 Newtonsoft.Json.dll 下载地址:http://files.cnblog ...

  6. C# XML - XmlDocument

    http://msdn.microsoft.com/zh-cn/library/System.Xml.XmlDocument(v=vs.80).aspx 1.member http://msdn.mi ...

  7. XML操作:1.XML类(http://blog.csdn.net/happy09li/article/details/7460521)

    XML绑定TreeView private void XmlOperation_Load(object sender, EventArgs e) { path = AppDomain.CurrentD ...

  8. XmlDocument类

    XmlDocument类是.NET框架的DOC解析器.XmlDocument将XML视为树状结构,它装载XML文档,并在内存中构建该文档的树状结构.下面来看下XmlDocument提供了哪些功能. 一 ...

  9. 文档对象模型操作xml文档

    简介 :文档对象模型(DOM)是一种用于处理xml文档的API函数集. 2.1文档对象模型概述 按照W3C的定义,DOM是“一种允许程序或脚本动态地访问更新文档内容,结构和样式的.独立于平台和语言的规 ...

随机推荐

  1. 视差贴图(Parallax Mapping)

    使用顶点光照的模型,当模型的面数很少的时候,光照效果会显得很奇怪,因为只有顶点上的光照是正确计算出来的,三角面上的光照都是通过硬件插值得到,所以难免会出现问题.基于像素的光照可以很好的改善这个问题.如 ...

  2. Flex 4 不同主题下容器子元素的管理方法

    Flex 下,容器主要分两类:Spark容器, Halo容器. Spark容器 Halo容器 说明 numElements numChildern 容器的子元素数量. addElement( ) ad ...

  3. Select的深入应用(1)

    在子句中使用列的位置: 使用select语句创建新表: 在子句中使用列的别名: 注意,你的 ANSI SQL 不允许你在一个WHERE子句中引用一个别名.这是因为在WHERE代码被执行时,列值还可能没 ...

  4. IOS thread1:exc_bad)access(code=exc_1386_gpflt)错误

    这种错误通常是内存管理的问题,一般是访问了已经释放的对象导致的,可以开启僵尸对象(Zombie Objects)来定位问题: 在Xcode的菜单: Product->Scheme->Edi ...

  5. HTTP协议——学习资料小结

    嗯,这几天回头再次的学习Servlet的知识点,觉得HTTP协议的内容是相当重要的,现在虽然知道浏览器与应用程序的交互离不开它,但是怎么将信息从浏览器传输到服务器的这个知识点还是一个盲点.于是从网上找 ...

  6. typedef 与define 的区别

    typedef和#define的用法与区别   typedef和#define的用法与区别 一.typedef的用法 在C/C++语言中,typedef常用来定义一个标识符及关键字的别名,它是语言编译 ...

  7. APUE第五章:标准IO库

    5.2流和file对象 #include <wchar.h> int fwide(FILE *fp, int mode); Returns: positive if stream is w ...

  8. 本机不安装Oracle客户端,使用PL/SQL Developer连接远程数据库

    附送PL/SQL Developer11中文版下载地址 1.先到Oracle网站下载Instant Client : http://www.oracle.com/technetwork/databas ...

  9. js跳转页面方法(转)

    <span id="tiao">3</span><a href="javascript:countDown"></a& ...

  10. ado.net工厂模式DbProviderFactories

    DbProviderFactory f = DbProviderFactories.GetFactory(System.Configuration.ConfigurationManager.Conne ...