请问如下xml如何显示到dbgrid并进一步导到数据库中

zbest 2010-04-21 11:48:44

<?xml version="1.0" encoding="GBK"?>
<VOUDATA>
<vou name="JZ-01-0001">
<entity name="HEAD">
<field name="VOU_NO" value="JZ-01-0001" />
<field name="VOU_TYPE" value="" />
<field name="VOU_DESC" value="收通知书" />
<field name="VOU_DATE" value="2009-01-04 00:00:00.0" />
<field name="INPUTOR" value="张三" />
<field name="AUDITOR" value="李四" />
<field name="POSTER" value="张三" />
</entity>
<entity name="BODY">
<field name="ACC_CODE" value="107" />
<field name="DR_AMT" value="914500" />
<field name="CR_AMT" value="0" />
<field name="VOU_DESC" value="收通知书" />
</entity>
<entity name="BODY">
<field name="ACC_CODE" value="4010101" />
<field name="DR_AMT" value="0" />
<field name="CR_AMT" value="10000" />
<field name="VOU_DESC" value="收通知书和支出" />
</entity>
<entity name="BODY">
<field name="ACC_CODE" value="4010101" />
<field name="DR_AMT" value="0" />
<field name="CR_AMT" value="777500" />
<field name="VOU_DESC" value="收定额公用支出" />
</entity>
<entity name="BODY">
<field name="ACC_CODE" value="4010102" />
<field name="DR_AMT" value="0" />
<field name="CR_AMT" value="99000" />
<field name="VOU_DESC" value="收事业运行人员支出" />
</entity>
<entity name="BODY">
<field name="ACC_CODE" value="4010102" />
<field name="DR_AMT" value="0" />
<field name="CR_AMT" value="24000" />
<field name="VOU_DESC" value="收公用支出" />
</entity>
<entity name="BODY">
<field name="ACC_CODE" value="4010103" />
<field name="DR_AMT" value="0" />
<field name="CR_AMT" value="4000" />
<field name="VOU_DESC" value="收支出" />
</entity>

</vou>
<vou name="JZ-01-0002">
<entity name="HEAD">
<field name="VOU_NO" value="JZ-01-0002" />
<field name="VOU_TYPE" value="" />
<field name="VOU_DESC" value="提现" />
<field name="VOU_DATE" value="2009-01-05 00:00:00.0" />
<field name="INPUTOR" value="张三" />
<field name="AUDITOR" value="李四" />
<field name="POSTER" value="张三" />
</entity>
<entity name="BODY">
<field name="ACC_CODE" value="101" />
<field name="DR_AMT" value="84342.08" />
<field name="CR_AMT" value="0" />
<field name="VOU_DESC" value="提现" />
</entity>
<entity name="BODY">
<field name="ACC_CODE" value="10201" />
<field name="DR_AMT" value="0" />
<field name="CR_AMT" value="26115.2" />
<field name="VOU_DESC" value="提现" />
</entity>
<entity name="BODY">
<field name="ACC_CODE" value="107" />
<field name="DR_AMT" value="0" />
<field name="CR_AMT" value="58226.88" />
<field name="VOU_DESC" value="提现" />
</entity>

</vou>
</VOUDATA>


请问类似上面的xml如何转为如下格式到数据库中

VOU_NO VOU_TYPE VOU_DESC VOU_DATE ACC_CODE INPUTOR DR_AMT CR_AMT AUDITOR POSTER
JZ-01-0001 _ 收到账通知书 2009-01-04 00:00:00.0 107 914500 0 张三 李四 张三
JZ-01-0001 _ 收通知书和支出 2009-01-04 00:00:00.0 4010101 0 10000 张三 李四 张三
……
……

是用友A++导出的财务的凭证表,想转成如上所述的格式,显示在DBGrid中,再导入到数据库中(excel或access或SQL serve等)


求思路,有简要代码最好,多谢!


关键是如何生成如上所示的格式,至于显示到dbgrid是后面的事,现在就是不知道思路:head段就一个,但其中的body段有若干个。
...全文
127 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zbest 2010-04-22
  • 打赏
  • 举报
回复
我想把每个<entity name="BODY">节里的内容,都要知道所属的<vou name="">
这个怎么写呢

才学读XML,弱问了
lw19860412 2010-04-22
  • 打赏
  • 举报
回复
var
Node: IXMLNode;
XMLDocument1: TXMLDocument;
begin
XMLDocument1.LoadFromFile('XML文件保存路径');
Node := XMLDocument1.DocumentElement;
for I := 0 to GNode.ChildNodes.Count - 1 do
循环取结点操作赋值
end;
大概就是这个意思
xmfan2000 2010-04-22
  • 打赏
  • 举报
回复
将DBGrid连接到一个AdoQuery,将XML解析后的值写入到AdoQuery中。
zbest 2010-04-22
  • 打赏
  • 举报
回复
寻求一个把xml读出显示到dbgrid的例子。

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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