lxml和循环在python中创建xml rss

Rec*_*ion 2 python lxml

我一直在使用lxml来创建rss feed的xml.但是我在使用标签时遇到了麻烦,并且无法真正弄清楚如何添加动态数量的元素.鉴于lxml似乎只是将函数作为函数的参数,我似乎无法弄清楚如何循环动态数量的项目而不重建整个页面.

rss = page = (
      E.rss(
        E.channel(
          E.title("Page Title"),
   E.link(""),
   E.description(""),

            E.item(
                  E.title("Hello!!!!!!!!!!!!!!!!!!!!! "),
                  E.link("htt://"),
                  E.description("this is a"),
            ),
        )
      )
    )
Run Code Online (Sandbox Code Playgroud)

Jas*_*rff 5

这个 lxml 教程说:


要创建子元素并将它们添加到父元素,您可以使用以下append()方法:

>>> root.append( etree.Element("child1") )
Run Code Online (Sandbox Code Playgroud)

然而,这很常见,所以有一种更短、更有效的方法来做到这一点:SubElement工厂。它接受与Element工厂相同的参数,但另外需要父作为第一个参数:

>>> child2 = etree.SubElement(root, "child2")
>>> child3 = etree.SubElement(root, "child3")
Run Code Online (Sandbox Code Playgroud)

因此,您应该能够创建文档,然后说channel = rss.find("channel")并使用上述任一方法向channel元素添加更多项目。


Mes*_*ssa 5

杰森回答了你的问题; 但是-仅供参考-你可以动态传递任意数量的函数参数的清单:E.channel(*args),其中args[E.title(... ), E.link(... ),... ].类似地,可以使用dict和两个stars(**)传递关键字参数.见文档.