精易论坛

标题: XML转JSON [打印本页]

作者: lubyce    时间: 2020-1-6 16:33
标题: XML转JSON
论坛逛了一圈,没有发现可用源码,可能是我不擅长搜索吧,有见过类似源码的朋友请及时指出,

本源码基于官方【xml支持库】和【精易模块775】写的,刚刚出炉,还是热乎的,本人菜鸟,不会优化代码,希望大佬们可以指点一下。

经过本人草草的测试,字符1-255中  仅 符号【_】和【$】可以用作json名称,故选用了$符号作为节点属性区别符。

已下为全部代码。目前已知bug,会丢失根节点,不知道该怎么处理。

  
子程序名返回值类型公开备 注
xml2json文本型 
参数名类 型参考可空数组备 注
xml_str字节集
起点文本型
变量名类 型静态数组备 注
xmlXML树 
json类_json 
子节点名文本型0
属性名文本型0
子属性名文本型0
计次  
子节点文本型 
如果真 (是否为空 (起点))
起点 = “@1”
xml.导入 (xml_str)
xml.取子节点名 (起点, 子节点名)
计次循环首 (xml.取子节点个数 (起点, ), 计次)
子节点 = 起点 + “/@”到文本 (计次)
子属性名 = xml.取所有属性名 (子节点, )
判断 (xml.取子节点个数 (子节点, ) > 0 取数组成员数 (子属性名) > 0)
判断 (数组_取次数 (子节点名, xml.取节点名文本 (子节点, )) > 1)
json.加成员 (xml2json (xml_str, 子节点), xml.取节点名文本 (子节点, ), )
json.置属性 (xml.取节点名文本 (子节点, ), xml2json (xml_str, 子节点), )

判断 (数组_取次数 (子节点名, xml.取节点名文本 (子节点, )) > 1)
json.加成员 (xml.取节点值文本 (子节点, ), xml.取节点名文本 (子节点, ), )
json.置属性 (xml.取节点名文本 (子节点, ), xml.取节点值文本 (子节点, ), )

计次循环尾 ()
属性名 = xml.取所有属性名 (起点, )
计次循环首 (取数组成员数 (属性名), 计次)
json.置属性 (“$” + 属性名 [计次], xml.取属性值文本 (起点, 属性名 [计次], ), )
计次循环尾 ()
返回 (json.取xx文本 ())


i支持库列表   支持库注释   
EXMLParserXML解析支持库


测试xml

<note>
<to>George</to>
<desc from="baidu.com" btn="search">
<logo></logo>
</desc>
<from>John</from>
<from>LiLei</from>
<from>Tom</from>
<from>HanMM</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>


转换结果

{"to":"George","desc":{"logo":"https://www.baidu.com/img/bd_logo1.png","$from":"baidu.com","$btn":"search"},"from":["John","LiLei","Tom","HanMM"],"heading":"Reminder","body":"Don't forget the meeting!"}

json.cn  结果对比图





作者: sostemp    时间: 2020-1-6 16:37
        支持开源~!感谢分享
作者: 一剑磨十年    时间: 2020-1-6 17:04
感谢分享~~~~
作者: 小熊666    时间: 2020-1-6 18:27
              感谢分享
作者: heckvo    时间: 2020-1-6 18:55
感谢分享,支持分享 行库了
作者: orjg    时间: 2020-1-7 08:42
支持开源~!感谢分享
作者: 外星星人    时间: 2020-1-7 11:33
支持开源~!感谢分享
作者: kyo9766    时间: 2020-1-7 15:05
XML的例子很少,感谢分享
作者: chiljun    时间: 2020-1-12 06:51
不错!!!!
作者: f100long    时间: 2021-5-19 19:24
努力学习,天天向上
作者: 朱星宇    时间: 2021-8-10 17:15
正好需要,下来式试。
作者: hy4962    时间: 2021-8-10 20:25
支持开源~!感谢分享
作者: yinyee    时间: 2023-5-18 09:05
感谢分享  
作者: yinyee    时间: 2023-5-18 09:06
感谢分享  
作者: wyd168    时间: 2023-11-3 15:06
感谢分享  
作者: zhyl8888    时间: 2024-10-4 03:49
☆.。.:*(嘿´Д`嘿).。.:*☆
作者: dhrjgzs    时间: 2024-11-26 10:08
高手萌新学习一下
作者: l1220020800    时间: 2025-2-24 22:19
感谢分享,很给力!~




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4