【问题标题】:lxml order of attributeslxml属性顺序
【发布时间】:2014-08-27 17:45:04
【问题描述】:

如本问题所述:

lxml preserves attributes order?

根据@abarnet 的建议,我编写了以下代码行:

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"/>

这很好(它保留了所需的顺序),但是当我想添加缺少的信息时:

xmlns:xsi="link_2" xsi:schemaLocation="http://www.sat.gob.mx/catalogocuentas"

作为我的 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'

我该如何解决?

提前致谢!!

【问题讨论】:

    标签: python xml lxml minidom


    【解决方案1】:

    问题是您向Element() init 方法发送了两次相同的关键字参数。对于您的初始化,您的第二个参数被用作attrib 关键字。在这种情况下,您的 OrderedDict() 包含您的所有属性。然后,您尝试再次提供它,这是它遇到碰撞的地方。您可以通过以下两种方式之一解决此问题:

    您可以将此属性添加到您的属性OrderedDict(),如下所示:

    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"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-01
      • 1970-01-01
      • 2012-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多