CDATA结点

XML的CDATA结点可以理解为数据结点,此类结点的内容会被原样不动解析,内容中的所有标记都会被忽略,也就是说CDATA结点可以包括任意特殊字符。

微信接收方的消息都是XML结构,其中很多结点就是CDATA的:

<xml>
<ToUserName><![CDATA[gh_c78d6e907523]]></ToUserName>
<FromUserName><![CDATA[o_0W1wG4xCDJTpdqlTfjSdVjlznQ]]></FromUserName>
<CreateTime>1483933403</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[测试文本]]></Content>
<MsgId>6373445435737863016</MsgId>
</xml>

其中有4个结点是CDATA的,CDATA结点内容 以“<![CDATA[”开始,以“]]>”结束。

解析CDATA结点

将上面的XML数据复制到剪贴板,在命令窗口执行下面的代码:


Dim
xo As Foxtable.XObject = Foxtable.XObject.Parse(ClipBoard.GetText())
Output
.Show(xo("ToUserName"))
Output
.Show(xo("FromUserName"))
Output
.Show(xo("CreateTime"))
Output
.Show(xo("MsgType"))
Output
.Show(xo("Content"))
Output
.Show(xo("MsgId"))

显示的结果为:

gh_c78d6e907523
o_0W1wG4xCDJTpdqlTfjSdVjlznQ
1483933403
text
测试文本
6373445435737863016

可以看到CDATA结点的解析和普通结点是一样的。

增加CDATA结点

Foxtable.XObject的AddCDATA方法用于新增CDATA结点,此方法的语法为:

AddCDATA(Key, Value)

Key:  结点名称
Value:结点值

例如在命令窗口执行:

Dim
xo As New Foxtable.XObject
xo
("name") = "李云龙"
xo
("age") = 38
xo
.AddCDATA("remark","1+ 2 <> 2")
xo
("rank") = "少将"
Output
.Show(xo.ToXML)

显示的结果为:


<XML><name>李云龙</name><age>38</age><remark><![CDATA[1+ 2 <> 2]]></remark><rank>少将</rank></XML>


本页地址:http://www.foxtable.com/mobilehelp/topics/0173.htm