十豆三老师请帮忙解决:VFP与VB生成的XML文件如何转换。

jsjlkzhl 2011-11-10 07:35:01
VFP与VB生成的XML文件如何转换
开票数据以XML格式输入,数据形式如下:
<InvInfo>
<Version> 1.00000 </Version>
<InvType>1</ InvType>
<PayClient Name="航天信息" ConUser="gdm" CardNo="26878880" Tel= "8886577" TaxNo="26878880" ProxyNo = "sn1786"/>
<fadeInv InvCode="10000000010000000000" InvNo="26878880" />
<Item name="初检费" num="1.00" price="80.00" cash="80.00" taxItem="2" exattrib1="", exattrib2="", exattrib3="", exattrib4=""/>
<Item name="复检费" num="1.00" price="80.00" cash="80.00" taxItem="2"
exattrib1="", exattrib2="", exattrib3="", exattrib4=""/>
…………….
<TradeData name="BUS_BANK" data="北京工商银行" />
< TradeData name="BUS_BANKACCOUNT" DATA="100497868" />
<TradeData name="BUS_BUSREG_NO" data="123456789" />
<TradeData name="BUS_CHECK_NO" data="987654321" />
<TradeData name="BUS_1" data="987654321" />
<TradeData name="BUS_2" data="987654321" />
<TradeData name="BUS_1" data="987654321" />
………
<Currency Name = "美元" Short = "USD" Sign = "$" Rate = "6.51"/>
</ InvInfo>
说明:
(1) 版本信息标签
<version> 1.00000 </version>
(2) 开票类型标签
<InvType>1</ InvType>
1— 正常票
2— 退票
3— 废票
目前接口不支持废票。
(3)付款人标签(收购业的收款人标签)
<PayClient Name=" " ConUser="" CardNo="" Tel= "" TaxNo="" ProxyNo = ""/>
Name ―― 名称(付款单位名称,收购业收款单位名称)
ConUser ―― 付款方联系人(收购业收款方联系人)
CardNo ―― 付款方联系人身份证号(收购业收款人联系人身份证号)
TaxNo ―― 付款方税号(收购业收款方税号)
ProxyNo ―― 委托书号
开票时一般只涉及到付款方名称,只需填写此项即可。
(4)退票信息标签
<fadeInv InvCode="" InvNo="" />
InvCode ―― 退票发票代码
InvNo ―― 退票号码
(5)发票明细(销售项目)标签
<Item name="复检费" num="1.00" price="80.00" cash="80.00" taxItem="2"
exattrib1="", exattrib2="", exattrib3="", exattrib4=""/>
Name ―― 项目名称,供暖行业表示供暖类型(不得超过20个字符)
Num ―― 数量(保留小数点后面两位)
Price ―― 单价(保留小数点后面两位)
Cash ―― 金额(保留小数点后面两位)
taxItem ―― 税种税目(应以税控器上的数据为准)
...全文
267 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
十豆三 2011-11-15
  • 打赏
  • 举报
回复
你用 STRCONV 转换后,手工用记事本打开看看是不是乱码?

另外,你是不是应该转换为 Unicode 字符,而不是 UTF-8。
jsjlkzhl 2011-11-15
  • 打赏
  • 举报
回复
多谢指导。
jsjlkzhl 2011-11-15
  • 打赏
  • 举报
回复
十豆三老师:m.lcInvXmlResult = STRCONV(m.lcInvXmlResult, 9)
m.lcInvXmlResult是一个xml格式的变量,通过STRCONV(m.lcInvXmlResult, 9)转换后传递给VB为什么汉字乱码
aabiao 2011-11-13
  • 打赏
  • 举报
回复
直接循环输出凑字符串即可。
这问题不难,知识烦而已。
十豆三 2011-11-11
  • 打赏
  • 举报
回复
邮件我收到了,但没有设备,无法调试,也没有长时间测试。

这种问题还是自己动手,或者找一个最近的朋友帮忙。

别人基本上不好帮忙。除非你找一个使用相同设备,又是使用 vfp 的网友,共享你一些代码,不过这个不太好碰吧。
十豆三 2011-11-11
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 jsjlkzhl 的回复:]
十豆三老师,如何把表中的数据转成以上格式的XML文件怎么办呀??
[/Quote]
Strtofile() 再将字符串写到文件。

你的问题不难,就是比较麻烦,因为行多,项多。

不行用 vb 等写个 dll,然后用 vfp 调用这个 dll。
jsjlkzhl 2011-11-11
  • 打赏
  • 举报
回复
十豆三老师,如何把表中的数据转成以上格式的XML文件怎么办呀??
十豆三 2011-11-11
  • 打赏
  • 举报
回复
把以上数据用 Filetostr() 函数转成字符串,然后再对字符串操作,可以用 STREXTRACT( ) 等函数。
十豆三 2011-11-11
  • 打赏
  • 举报
回复
vfp 生成的 xml 只有 vfp 能够识别,其他工具产生的 xml vfp 也不能识别。

所以你的问题需要另写代码转换。
十豆三 2011-11-11
  • 打赏
  • 举报
回复
上面这段 xml,那些内容是固定,那些是动态的(即你要从表中读出来再写到这里的)?
固定的不用管了,动态的每次替换上面的动态内容,如:
xml内容中的红色部分为动态的。

aabbcc<123>eeadife[100]

那你就建一个这样的xml做为模板
aabbcc@@eeadife@@

这里的 @@ 你也可以用其他特殊字符

字符串变量=filetostr('xml文件名')
字符串变量=STRTRAN(字符串变量,'@@','[100]',2,1,1) && 从后向前替换
字符串变量=STRTRAN(字符串变量,'@@','<123>',1,1,1)
Strtofile(字符串变量,'新xml文件名')

置于 STRTRAN()函数的用法,请参考 vfp 自带帮助。
另外建议用 vfp9.0。

2,749

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧