| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4125 人关注过本帖
标题:XMLTOCURSOR函数在转全数字字符时前面的0被去除了,如何解决
只看楼主 加入收藏
csyx
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:火星
等 级:版主
威 望:37
帖 子:703
专家分:2780
注 册:2018-3-13
收藏
得分:0 
如果你知道xml各字段的数据类型,用前面给你的方法,先创建好一个空表,再在参数中+8192,将xml的数据append进来就好
如果xml是别人提供的,他应该同时提供xsd格式描述文件,才能准确还原
如果不清楚xsd,可以度娘了解一下,可以让vfp自动生成一个,依样画葫芦造一个,下面代码会生成一个简单的样板:
Create Cursor test (f1 Int, f2 varchar(10))
Insert into test (f1, f2) Values (123, 'abcd')
CursorToXML('test','d:\test.xml', 1, 16+512, 0, 'test.xsd')

其实,xml已是过去式,现在大都使用json来交换数据

这家伙很懒,啥也没留下
2019-07-23 13:53
laibinhua
Rank: 2
等 级:论坛游民
威 望:1
帖 子:293
专家分:38
注 册:2010-12-23
收藏
得分:0 
回复 11楼 csyx
谢谢,主要是有的接口还是用XML,Jason的你也有吗?可以分享下吗? 比如下面的Jason,要取到 bName
{"clientId":"200_1","code":"0","data":"{\"items\":[{\"bName\":\"左氧氟沙星\",\"bagUnit\":\"盒\",\"cmqc\":\"\",\"costPrice\":0.0000,\"dosageForm\":\"\",\"dose\":\"0.0\",\"doseUnit\":\"\",\"eName\":\"\",\"id\":\"11185\",\"isSell\":\"1\",\"itemType\":\"16\",\"manufacturer\":\"\",\"name\":\"\",\"pingyin\":\"zyfsx\",\"prescriptionNumber\":\"10\",\"prescriptionUnit\":\"支\",\"retailPrice\":0.0300,\"sellPrice\":\"0.0100\",\"spec\":\"\",\"status\":\"1\",\"statusText\":\"启用\"},{\"bName\":\"丹参川芎嗪注射液\",\"bagUnit\":\"支\",\"cmqc\":\"H22026448\",\"costPrice\":0.0000,\"dosageForm\":\"28\",\"dose\":\"5.0\",\"doseUnit\":\"\",\"eName\":\"\",\"id\":\"11186\",\"isSell\":\"2\",\"itemType\":\"16\",\"manufacturer\":\"吉林四长制药有限公司\",\"name\":\"\",\"pingyin\":\"dccxqzsy\",\"prescriptionNumber\":\"1\",\"prescriptionUnit\":\"支\",\"retailPrice\":0.0200,\"sellPrice\":\"0.0000\",\"spec\":\"5ml\",\"status\":\"1\",\"statusText\":\"启用\"},{\"bName\":\"独活寄生丸\",\"bagUnit\":\"g\",\"cmqc\":\"\",\"costPrice\":0.0000,\"dosageForm\":\"\",\"dose\":\"0.0\",\"doseUnit\":\"7\",\"eName\":\"\",\"id\":\"11187\",\"isSell\":\"0\",\"itemType\":\"16\",\"manufacturer\":\"\",\"name\":\"\",\"pingyin\":\"dhjsw\",\"prescriptionNumber\":\"0\",\"prescriptionUnit\":\"\",\"retailPrice\":5.0000,\"sellPrice\":\"0.0000\",\"spec\":\"\",\"status\":\"1\",\"statusText\":\"启用\"}],\"pageEnable\":1,\"pageIndex\":1,\"pageSize\":1000,\"totalPage\":1,\"totalSize\":3}","key":"326617741564139847037","msg":"成功","timer":1564139847037,"type":"110","versionType":"3"}

[此贴子已经被作者于2019-7-26 11:18编辑过]

2019-07-26 11:07
csyx
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:火星
等 级:版主
威 望:37
帖 子:703
专家分:2780
注 册:2018-3-13
收藏
得分:0 
vfp解析json的方法很多,好像梅子论坛上就有几个专用的dll可用,GitHub上也有不少,例如:https://

如果交换的数据量不大,解析速度不重要的话,直接用Windows自带的MSScriptControl组件就能解决问题,例如:

Text to cc Noshow pretext 1+2
{"clientId":"200_1","code":"0","data":"{\"items\":[{\"bName\":\"左氧氟沙星\",\"bagUnit\":\"盒 ........
EndText
*-- 注意:由于vfp天生限制(不区分大小写),不强制转成小写的话,传递给组件解析后,像bName这样的字段会读不出来
cc = Lower(cc)
*--

oScript = NewObject('MSScriptControl.ScriptControl')
oScript.Language = 'JScript'
cc='var json=' + cc + ';'
oScript.AddCode(cc)
oo = m.oScript.CodeObject.json

cc = oo.data
cc='var json=' + cc + ';'
oScript.AddCode(cc)
oo = m.oScript.CodeObject.json

For each o1 in oo.items
    ? o1.bName, o1.retailPrice    && 产品名, 零售价
EndFor

这家伙很懒,啥也没留下
2019-07-26 12:34
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
还是暴力解析法方便,不受文本格式限制,不需要借助第三方帮助就能解决问题。

坚守VFP最后的阵地
2019-07-26 13:33
laibinhua
Rank: 2
等 级:论坛游民
威 望:1
帖 子:293
专家分:38
注 册:2010-12-23
收藏
得分:0 
回复 13楼 csyx
谢谢,先实验下看!
2019-07-26 14:12
hlzcxkj
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2017-9-5
收藏
得分:0 
学习了
2020-01-22 17:25
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
以下是引用laibinhua在2019-7-26 11:07:07的发言:

谢谢,主要是有的接口还是用XML,Jason的你也有吗?可以分享下吗? 比如下面的Jason,要取到 bName
{"clientId":"200_1","code":"0","data":"{\"items\":[{\"bName\":\"左氧氟沙星\",\"bagUnit\":\"盒\",\"cmqc\":\"\",\"costPrice\":0.0000,\"dosageForm\":\"\",\"dose\":\"0.0\",\"doseUnit\":\"\",\"eName\":\"\",\"id\":\"11185\",\"isSell\":\"1\",\"itemType\":\"16\",\"manufacturer\":\"\",\"name\":\"\",\"pingyin\":\"zyfsx\",\"prescriptionNumber\":\"10\",\"prescriptionUnit\":\"支\",\"retailPrice\":0.0300,\"sellPrice\":\"0.0100\",\"spec\":\"\",\"status\":\"1\",\"statusText\":\"启用\"},{\"bName\":\"丹参川芎嗪注射液\",\"bagUnit\":\"支\",\"cmqc\":\"H22026448\",\"costPrice\":0.0000,\"dosageForm\":\"28\",\"dose\":\"5.0\",\"doseUnit\":\"\",\"eName\":\"\",\"id\":\"11186\",\"isSell\":\"2\",\"itemType\":\"16\",\"manufacturer\":\"吉林四长制药有限公司\",\"name\":\"\",\"pingyin\":\"dccxqzsy\",\"prescriptionNumber\":\"1\",\"prescriptionUnit\":\"支\",\"retailPrice\":0.0200,\"sellPrice\":\"0.0000\",\"spec\":\"5ml\",\"status\":\"1\",\"statusText\":\"启用\"},{\"bName\":\"独活寄生丸\",\"bagUnit\":\"g\",\"cmqc\":\"\",\"costPrice\":0.0000,\"dosageForm\":\"\",\"dose\":\"0.0\",\"doseUnit\":\"7\",\"eName\":\"\",\"id\":\"11187\",\"isSell\":\"0\",\"itemType\":\"16\",\"manufacturer\":\"\",\"name\":\"\",\"pingyin\":\"dhjsw\",\"prescriptionNumber\":\"0\",\"prescriptionUnit\":\"\",\"retailPrice\":5.0000,\"sellPrice\":\"0.0000\",\"spec\":\"\",\"status\":\"1\",\"statusText\":\"启用\"}],\"pageEnable\":1,\"pageIndex\":1,\"pageSize\":1000,\"totalPage\":1,\"totalSize\":3}","key":"326617741564139847037","msg":"成功","timer":1564139847037,"type":"110","versionType":"3"}

图片附件: 游客没有浏览图片的权限,请 登录注册

坚守VFP最后的阵地
2021-04-17 11:01
快速回复:XMLTOCURSOR函数在转全数字字符时前面的0被去除了,如何解决
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.032157 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved