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>