标题:XMLTOCURSOR函数在转全数字字符时前面的0被去除了,如何解决
只看楼主
laibinhua
Rank: 2
等 级:论坛游民
威 望:1
帖 子:205
专家分:31
注 册:2010-12-23
结帖率:56.36%
已结贴  问题点数:20 回复次数:16 
XMLTOCURSOR函数在转全数字字符时前面的0被去除了,如何解决
命令如下:
XML 原文件(1.xml)
<?xml version="1.0" encoding="GBK" standalone="true"?>
<row>
<akc190>00001907176607399</akc190>
<aka130>0201</aka130>
<aac001>320016387</aac001>
<aae011>杨清江</aae011>
<aae036>2019-07-17 16:06:10</aae036>
<yka103>00001907177491373</yka103>
</row>
当我用  XMLTOCURSOR("d:\1.xml","curTest",512)  时
转出来的表 akc190 aka130 yka103 都全转为数值型,前面的0都没有了,有办法保持0转为字符型字段吗?
搜索更多相关主题的帖子: 函数 数字 字符 XML row 
2019-07-18 17:33
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:5 
自己写代码,用STREXTRACT( ) 函数提取需要的内容

坚守VFP最后的阵地
2019-07-18 18:34
wcx_cc
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:52
帖 子:352
专家分:1152
注 册:2015-10-2
得分:5 
看看有没有参考价值:(需要安装 msxml4.0)
TEXT TO cXML noshow
<?xml version="1.0" encoding="gb2312"?>
<note>
<akc190>00001907176607399</akc190>
<aka130>0201</aka130>
<aac001>320016387</aac001>
<aae011>杨清江</aae011>
<aae036>2019-07-17 16:06:10</aae036>
<yka103>00001907177491373</yka103>
</note>
ENDTEXT
oXMLAdapter = Newobject("XMLAdapter")
oXMLAdapter.LoadXML(cXML)
clear
FOR EACH XX IN oXMLAdapter.IXMLDOMElement.childNodes
  ?xx.nodeTypedValue
ENDFOR



[此贴子已经被作者于2019-7-19 01:48编辑过]

2019-07-19 01:47
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
回复 3楼 wcx_cc
楼上的答案不适合楼主的文件格式

[此贴子已经被作者于2019-7-19 12:02编辑过]


坚守VFP最后的阵地
2019-07-19 11:53
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
CLEAR
TEXT TO cStr NOSHOW TEXTMERGE
<?xml version="1.0" encoding="GBK" standalone="true"?>
<row>
<akc190>00001907176607399</akc190>
<aka130>0201</aka130>
<aac001>320016387</aac001>
<aae011>杨清江</aae011>
<aae036>2019-07-17 16:06:10</aae036>
<yka103>00001907177491373</yka103>
</row>
<row>
<akc190>00001907176607399</akc190>
<aka130>0201</aka130>
<aac001>320016387</aac001>
<aae011>杨清江</aae011>
<aae036>2019-07-17 16:06:10</aae036>
<yka103>00001907177491373</yka103>
</row>
ENDTEXT
FOR i = 1 TO OCCURS("<row>", cStr)
    ?STREXTRACT(cStr, "<akc190>", "</akc190>", i)
    ?STREXTRACT(cStr, "<aka130>", "</aka130>", i)
    ?STREXTRACT(cStr, "<aac001>", "</aac001>", i)
    ?STREXTRACT(cStr, "<aae011>", "</aae011>", i)
    ?STREXTRACT(cStr, "<aae036>", "</aae036>", i)
    ?STREXTRACT(cStr, "<yka103>", "</yka103>", i)
ENDFOR

坚守VFP最后的阵地
2019-07-19 12:13
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
虽然暴力解析不登大雅之堂,但容易掌握,使用方便,在解析过程中容易控制,出现问题能及时解决

坚守VFP最后的阵地
2019-07-19 12:19
wcx_cc
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:52
帖 子:352
专家分:1152
注 册:2015-10-2
得分:0 
强制性拆分与组合,与专用函数转换,各有特点.前者的好处确实是容易掌握,使用方便,有出错时容易找。但缺点是繁琐,技术含量少工作量大,出错率多一点。所以,还是根据具体情况,可以选用较为合适的方法,2者结合吧。
2019-07-19 19:10
csyx
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:29
帖 子:484
专家分:1827
注 册:2018-3-13
得分:5 
Create Cursor curTest ( ;
     AKC190 V(20) ;
    ,AKA130 V(10) ;
    ,AAC001 V(10) ;
    ,AAE011 V(10) ;
    ,AAE036 T ;
    ,YKA103 V(20) ;
)
XMLToCursor("d:\1.xml", "curTest", 512+8192)

或者,自己创建一个 XSD 文件,定义好字段格式,再导入

[此贴子已经被作者于2019-7-19 22:06编辑过]

2019-07-19 22:03
schtg
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:https://t.me/pump_upp
等 级:贵宾
威 望:67
帖 子:1355
专家分:2534
注 册:2012-2-29
得分:5 
谢谢各位,学习啦!
2019-07-20 06:57
laibinhua
Rank: 2
等 级:论坛游民
威 望:1
帖 子:205
专家分:31
注 册:2010-12-23
得分:0 
回复 8楼 csyx
谢谢你的好方法,解决了!对了你说的 自己创建一个 XSD 文件,定义好字段格式,再导入 !这个要怎么操作呢?
2019-07-22 18:07



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-495929-1-1.html




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

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