注册 登录
编程论坛 Python论坛

按一定条件提取xml 数据

kfxhyc 发布于 2021-09-08 11:10, 888 次点击
- <科目余额及发生额>
  <会计期间号>1</会计期间号>
  <科目编号>100202</科目编号>
  <期初余额方向>贷</期初余额方向>
  <期初本币余额>1.00</期初本币余额>
</科目余额及发生额>
- <科目余额及发生额>
  <会计期间号>5</会计期间号>
  <科目编号>30010101</科目编号>
  <期初余额方向>贷</期初余额方向>
  <期初本币余额>10.00</期初本币余额>
</科目余额及发生额>
- <凭证>
  <会计期间号>1</会计期间号>
  <科目编号>100203</科目编号>
  < 记账凭证摘要>贷顶顶顶顶</ 记账凭证摘要>
  < 借方本币余额>153708.68</借方本币余额>
</凭证>
</科目余额及发生额>
- <科目余额及发生额>
  <会计期间号>1</会计期间号>
  <科目编号>10020303</科目编号>
  <期初余额方向>贷</期初余额方向>
  <期初本币余额>8.68</期初本币余额>
</科目余额及发生额>

程序代码:
import xml.dom.minidom as xx
import os,xlwt,datetime
# path=os.path.abspath('.')
#
data_path=os.path.join(path,'GL.xml')
dom = xx.parse('GL.xml')
root = dom.documentElement
list_ye = root.getElementsByTagName("科目余额及发生额")
kmbm_len = 14
# bb= list_ye[]
for m in list_ye:
    kjqjh_ye = m.getElementsByTagName('会计期间号')[0]
    kjqjh_ye_z = kjqjh_ye.childNodes[0].data
    kmbm_ye = m.getElementsByTagName('科目编号')[0]
    kmbm_ye_z = kmbm_ye.childNodes[0].data
    fx_ye = m.getElementsByTagName('期初余额方向')[0]
    fx_ye_z = fx_ye.childNodes[0].data
    qc_ye = m.getElementsByTagName('期初本币余额')[0]
    qc_ye_z = qc_ye.childNodes[0].data
    if  kjqjh_ye_z == '1' :
        print(kjqjh_ye_z)
        print(kmbm_ye_z)
        print(fx_ye_z)
        print(qc_ye_z)   
    else:
        continue

要求: 1)打印出</科目余额及发生额>  中 并且要求 <会计期间号> == 1  提取出(科目编号,期初余额方向,期初本币余额)
       2)打印出</科目余额及发生额>  中 并且要求 <会计期间号> == 1 and   len(科目编号) ==8    str(科目编号,6) sum(期初本币余额) 提取出(科目编号,期初余额方向,sum(期初本币余额))
       3)打印出</科目余额及发生额>  中 并且要求 <会计期间号> == 1 and   len(科目编号) ==6  str(科目编号,4) sum(期初本币余额) 提取出(科目编号,期初余额方向,sum(期初本币余额))

结果 :
科目编号   期初余额方向   期初本币余额
100202      贷             1.00
10020303    贷             8.68
100203      贷             8.68
1002        贷             9.68
请高手帮忙看看
 

[此贴子已经被作者于2021-9-8 11:17编辑过]

1 回复
#2
diycai2021-09-08 13:03
手写xml解析我会,python我不会,懒得学。
1