前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JSON与XML你不懂就OUT,真相是它们都是字符串

JSON与XML你不懂就OUT,真相是它们都是字符串

作者头像
加菲猫的VFP
发布2021-12-01 20:47:39
4900
发布2021-12-01 20:47:39
举报
文章被收录于专栏:加菲猫的VFP加菲猫的VFP

这两个东西如果不弄清楚,BS,APP,中间层,小程序,公众号开发这道坎是万万迈不过去的,其实它们都是字符串,不信你接着往下看。

准备环境: JSON解析:木瓜大侠的FOXJSON库 XML解析:系统一般自带 VFP SP2 7423

框架中自带FOXJSON,就不需要另外下载了。 如果想要这些文件,请关注加菲猫的VFP,发送“JSON”就可以获取下载链接。

JSON与XML的概念

JSON: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性。可在不同平台之间进行数据交换。JSON采用兼容性很高的、完全独立于语言文本格式,同时也具备类似于C语言的习惯。 XML: 扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。

请记住,他们就是字符串。

键值对表示法

JSON 使用键/值对的字符串来表示数据{键:值} {"name":"张三","age":"20"}可以表示一个姓名,年龄的信息

XML用标签来表示 张三 20

vfp来创建JSON

1.方法一

代码语言:javascript
复制
cJosn=[{"name":"张三","age","20"}]

2.方法二:使用木瓜的foxjson

代码语言:javascript
复制
oUser=Createobject("foxJson")
oUser.Append("name","张三")
oUser.Append("age",20)
?oUser.ToString()

VFP如何解析这个字符串?

代码语言:javascript
复制
cJosn='{"name":"张三","age":"20"} '
oJSON=foxjson_parse(cJson)
?oJson.item("name")
?oJson.item("age")

vfp来创建JSON数组

代码语言:javascript
复制
oUsers=Createobject("foxJson",{})
oUser=Createobject("foxJson")
oUser.Append("name","张三")
oUser.Append("age",20)
oUsers.Append(oUser)
oUser=Createobject("foxJson")
oUser.Append("name","李四")
oUser.Append("age",18)
oUsers.Append(oUser)
?oUser.toString()
VFP解析JSON数组
代码语言:javascript
复制
cJson='[{"name":"张三","age":20},{"name":"李四","age":8}] '
oUsers=foxjson_parse(cJson)
?"记录数",oUsers.count
?oUsers.item(1).item("name")
?oUsers.item(1).item("age")
?oUsers.item(2).item("name")
?oUsers.item(2).item("age")

vfp来创建xml

方式一

代码语言:javascript
复制
cXML=[<preson><name>张三</name><age>20</age></preson>]

方式二

代码语言:javascript
复制
oXMLDOC=Createobject("Microsoft.XMLDOM")
oPerson= oXMLDOC.createElement("person")
oName=oXMLDOC.createElement("name")
oName.Text="张三"
oAge=oXMLDOC.createElement("age")
oAge.Text=20
oPerson.appendchild(oName)
oPerson.appendchild(oAge)
?oPerson.XML

建立一个XML数组

*--建立一个XML数组

代码语言:javascript
复制
oXMLDOC=Createobject("Microsoft.XMLDOM")
oPersons=oXMLDOC.createElement("persons")
&&加个S表示多个
oPerson= oXMLDOC.createElement("person")
oName=oXMLDOC.createElement("name")
oName.Text="张三"
oAge=oXMLDOC.createElement("age")
oAge.Text=20
oPerson.appendchild(oName)
oPerson.appendchild(oAge)
oPersons.appendchild(oPerson)
oPerson= oXMLDOC.createElement("person")
oName=oXMLDOC.createElement("name")
oName.Text="李四"
oAge=oXMLDOC.createElement("age")
oAge.Text=25
oPerson.appendchild(oName)
oPerson.appendchild(oAge)
oPersons.appendchild(oPerson)

VFP解析XML

代码语言:javascript
复制
TEXT TO lcXML NOSHOW TEXTMERGE
张三20
ENDTEXT
oXMLDOC=Createobject("Microsoft.XMLDOM")
oXMLDOC.loadxml(lcXML )
?"共有子标签:",oxmldoc.documentElement.childNodes.length
oxmlHeader=oxmldoc.documentElement.childNodes.Item(0)
&&childNodes里有两个标签 分别是name ,age
?oxmlHeader.text &&里面的值
?oxmlHeader.xml &&连同标签
?oxmlHeader.nodename &&标签名

通过childNodes 一级一级往下 XML 是无限多级的 上级的childNodes 存放下级标签有多少个,分别是什么

xml是一颗倒置的树,如果每一个节点都要输出,那得用编历算法(我研究完就忘记了,递归算法)

oNode=getElementsByTagName("name")

通过xmldoc的getElementsByTagName方法可以将所有同名的标签全部抓出来变成一个集合

使用另一个大招getElementsByTagName

代码语言:javascript
复制
TEXT TO lcXML NOSHOW TEXTMERGE
<preson><name>张三</name><age>20</age></preson>
ENDTEXT
oXMLDOC=Createobject("Microsoft.XMLDOM")
oXMLDOC.loadxml(lcXML )
oXMLHeaders=oXMLDOC.getElementsByTagName("name")
?"标签集合共有",oxmlHeaders.length
?oxmlHeaders.item(0).text &&里面的值
?oxmlHeaders.item(0).xml &&连同标签
?oxmlHeaders.item(0).nodename &&标签名
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-11-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 加菲猫的VFP 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • JSON与XML的概念
  • 键值对表示法
  • vfp来创建JSON
  • VFP如何解析这个字符串?
  • vfp来创建JSON数组
    • VFP解析JSON数组
    • vfp来创建xml
    • 建立一个XML数组
    • VFP解析XML
    • 使用另一个大招getElementsByTagName
    相关产品与服务
    云开发 CloudBase
    云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档