XML-файл содержит множество данных, включая некоторые счета-фактуры. Я хотел бы извлечь только счета-фактуры из XML-файла и создать новый XML-файл, содержащий только счета-фактуры.
Я написал код, который извлекает счета-фактуры, но когда дело доходит до создания нового xml-файла (со счетами-фактурами), он содержит только один счет-фактуру. Как я могу изменить свой код, чтобы создать XML-файл со всеми счетами-фактурами.
Пожалуйста, помогите мне решить эту проблему.
Мой код: (бизонилат означает счет)
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:
<konyveles>
<program>Kontír FB </program>
<verzio>1.12.2.8</verzio>
<feladdatum>2014.01.26</feladdatum>
<feladido>17:05:38</feladido>
<cegnev>Cé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>
Простой запуск XSLT демонстрационная рабочий пример. Модуль lxml Python может запускать сценарии XSLT.






Если вам нужен хорошо отформатированный XML, вам понадобится корневой элемент в вашем документе, затем вы можете добавить все свои элементы в корень и сохранить в свой файл.
root = ET.Element('root')
root.extend(doc.findall('bizonylat'))
ET.ElementTree(root).write('out.xml', 'utf8')
Спасибо, Эльвио Мартинелли! : D
Посмотрите, как использовать петлю. Ваш цикл создает один и тот же файл для одного счета снова и снова.