首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Python中将XML转换为XML

在Python中将XML转换为XML
EN

Stack Overflow用户
提问于 2018-07-21 04:22:47
回答 1查看 98关注 0票数 0

xml文件包含许多数据,包括一些发票。我只想从xml文件中提取发票,并创建一个新的只包含发票的xml文件。

我编写了一段提取发票的代码,但是当需要创建一个新的xml文件(包含发票)时,它只包含一张发票。如何修改代码以创建包含所有发票的xml文件。

请帮我解决这个问题。

我的代码:(bizonylat表示发票)

代码语言:javascript
复制
import os
import xml.etree.ElementTree as ET

utvonal = os.path.dirname(os.path.realpath(__file__))
xml_file = os.path.join(utvonal, 'xml\\01-K011116_K011169.xml') 
doc = ET.parse(xml_file).getroot()

for invoice in doc.findall('bizonylat'):
    invoices = ET.ElementTree(invoice).write('out.xml', 'utf8')

XML方案:

代码语言:javascript
复制
<konyveles>
  <program>Kont&#xED;r FB </program>
  <verzio>1.12.2.8</verzio>
  <feladdatum>2014.01.26</feladdatum>
  <feladido>17:05:38</feladido>
  <cegnev>C&#xE9;g neve</cegnev>
  <felhasznalo>Tulajdonos</felhasznalo>
  <bizonylat>
    <bizonylatszam>V3</bizonylatszam>
    <biz_egyedi_id/>
    <konyv_dat>2013.01.24</konyv_dat>
    <teljesites_dat>2013.02.11</teljesites_dat>
    <esedekesseg_dat>2013.03.20</esedekesseg_dat>
    <partneradat/>
    <bizonylat_netto>628937,00</bizonylat_netto>
    <bizonylat_brutto>798750,00</bizonylat_brutto>
    <kontirozasok></kontirozasok>
  </bizonylat>
  <bizonylat>
    <bizonylatszam>V3</bizonylatszam>
    <biz_egyedi_id/>
    <konyv_dat>2013.01.24</konyv_dat>
    <teljesites_dat>2013.02.11</teljesites_dat>
    <esedekesseg_dat>2013.03.20</esedekesseg_dat>
    <partneradat/>
    <bizonylat_netto>628937,00</bizonylat_netto>
    <bizonylat_brutto>798750,00</bizonylat_brutto>
    <kontirozasok></kontirozasok>
  </bizonylat>
</konyveles>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-21 06:50:16

如果需要格式良好的XML,则需要在文档中添加根元素,然后可以将所有元素添加到根元素并保存到文件中。

代码语言:javascript
复制
root = ET.Element('root')
root.extend(doc.findall('bizonylat'))
ET.ElementTree(root).write('out.xml', 'utf8')
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51449851

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档