У меня проблема с xml и python для удаления узла перед записью xml.
from xml.etree.ElementTree import ElementTree
from xml.etree.ElementTree import Element
from xml.etree.ElementTree import SubElement
import xml.etree.ElementTree as etree
root = Element('p:FatturaElettronica')
Header = SubElement(root, 'FatturaElettronicaHeader')
CedentePrestatore = SubElement(Header, 'CedentePrestatore')
перед записью на диск я хочу удалить элемент CedentePrestatore, который я пробую:
xv = root.findall('.//CedentePrestatore')
root.remove(xv) <------------------ ERROR
Почему? Как я могу удалить узел перед записью изменений на диск?
Полный код:
#!/usr/bin/env python
# -*- coding: cp1252 -*-
#import xlsxwriter
import sys
import os
import datetime
import re
import logging
import ConfigParser
import shutil
#import MySQLdb as mdb
import smtplib
#import xlrd as opx
# xlwt as opw
import unicodedata
import base64
from xml.etree.ElementTree import ElementTree
from xml.etree.ElementTree import Element
from xml.etree.ElementTree import SubElement
import xml.etree.ElementTree as etree
def test():
etree.register_namespace('ds',"http://www.w3.org/2000/09/xmldsig#") #some name
etree.register_namespace('p',"http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2") #some name
etree.register_namespace('xsi',"http://www.w3.org/2001/XMLSchema-instance") #some name
root = Element('p:FatturaElettronica')
print "ok"
root = Element('p:FatturaElettronica')
Header = SubElement(root, 'FatturaElettronicaHeader')
DatiTr = SubElement(Header, 'DatiTrasmissione')
IdTra = SubElement(DatiTr, 'IdTrasmittente')
IdPaese = SubElement(IdTra, 'IdPaese')
IdCodice = SubElement(IdTra, 'IdCodice')
IdCodice.text = '0000000'
IdPaese.text = 'IT'
ProgressivoInvio = SubElement(DatiTr, 'ProgressivoInvio')
ProgressivoInvio.text = '1'
FormatoTrasmissione = SubElement(DatiTr, 'FormatoTrasmissione')
FormatoTrasmissione.text = 'FPR12'
xc = root.find('.//ProgressivoInvio')
root.remove(xc)
if __name__ == '__main__':
reload(sys)
sys.setdefaultencoding('cp1252')
test()