Python lxml属性顺序
如本问题所述: 根据@abarnet的建议,我编写了以下代码行:Python lxml属性顺序,python,xml,lxml,minidom,Python,Xml,Lxml,Minidom,如本问题所述: 根据@abarnet的建议,我编写了以下代码行: root = ET.Element('{%s}Catalogo' % SATNS, OrderedDict([("Ano","2014"),("Mes","02"),("TotalCtas","219"),("RFC","XXX010101XXX"),("Version","1.0")]), nsmap={'catalogocuentas':SATNS}) 我明白了: <catalogocuentas:Catalogo
root = ET.Element('{%s}Catalogo' % SATNS, OrderedDict([("Ano","2014"),("Mes","02"),("TotalCtas","219"),("RFC","XXX010101XXX"),("Version","1.0")]), nsmap={'catalogocuentas':SATNS})
我明白了:
<catalogocuentas:Catalogo xmlns:catalogocuentas="http://www.sat.gob.mx/catalogocuentas" Ano="2014" Mes="02" TotalCtas="219" RFC="XXX010101XXX" Version="1.0"/>
作为xml的一部分,然后在python代码中添加以下信息:
attrib={location_attribute: 'http://www.sat.gob.mx/catalogocuentas'}
使其成为:
root = ET.Element('{%s}Catalogo' % SATNS, OrderedDict([("Ano","2014"),("Mes","02"),("TotalCtas","219"),("RFC","XXX010101XXX"),("Version","1.0")]), nsmap={'catalogocuentas':SATNS}, attrib={location_attribute: 'http://www.sat.gob.mx/catalogocuentas'})
我得到这个错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "lxml.etree.pyx", line 2558, in lxml.etree.Element (src/lxml/lxml.etree.c:52829)
TypeError: Element() got multiple values for keyword argument 'attrib'
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
lxml.etree.Element(src/lxml/lxml.etree.c:52829)中的文件“lxml.etree.pyx”,第2558行
TypeError:Element()为关键字参数“attrib”获取了多个值
我怎样才能修好它
提前谢谢 问题是您将同一关键字参数发送给
元素()
init方法两次。对于初始化,第二个参数将用作attrib
关键字。在本例中,哪个是包含所有属性的OrderedDict()
。然后,您尝试再次提供它,这是它遇到冲突的地方。您可以通过以下两种方式之一解决此问题:
您可以将此属性添加到属性orderedict()
中,如下所示:
root = ET.Element('{%s}Catalogo' % SATNS, OrderedDict([("Ano","2014"),("Mes","02"),("TotalCtas","219"),("RFC","XXX010101XXX"),("Version","1.0"),("location_attribute","http://www.sat.gob.mx/catalogocuentas")]), nsmap={'catalogocuentas':SATNS})
或者,您也可以通过执行以下操作将其添加到下一行:
root.attrib["location_attribute"] = "http://www.sat.gob.mx/catalogocuentas"
root.attrib["location_attribute"] = "http://www.sat.gob.mx/catalogocuentas"