论坛逛了一圈,没有发现可用源码,可能是我不擅长搜索吧,有见过类似源码的朋友请及时指出,
本源码基于官方【xml支持库】和【精易模块 775】写的,刚刚出炉,还是热乎的,本人菜鸟,不会优化代码,希望大佬们可以指点一下。
经过本人草草的测试,字符1-255中 仅 符号【_】和【$】可以用作json名称,故选用了$符号作为节点属性区别符。
已下为全部代码。目前已知bug,会丢失根节点,不知道该怎么处理。
xml2json 文本型 xml_str 字节集 起点 文本型
变量名 类 型 静态 数组 备 注 xml XML树 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文本 ( ) )
测试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 结果对比图