4

私はrssフィードのxmlを作成するためにlxmlを使用しています。しかし、タグに問題があり、動的な数の要素を追加する方法を実際に理解することはできません。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"),
            ),
        )
      )
    )
4

3 に答える 3

6

ジェイソンはあなたの質問に答えました。しかし–参考までに–任意の数の関数の引数をリストとして動的に渡すことができます:、E.channel(*args)ここで.........。同様に、キーワード引数はdictと2つの星()を使用して渡すことができます。ドキュメントを参照してください。args[E.title(), E.link(),]**

于 2010-01-21T00:27:17.967 に答える
5

このlxmlチュートリアルは次のように述べています。


子要素を作成して親要素に追加するには、次のappend()メソッドを使用できます。

>>> root.append( etree.Element("child1") )

ただし、これは非常に一般的であるため、これを行うためのより短く、はるかに効率的な方法があります。それはSubElementファクトリです。ファクトリと同じ引数を受け入れますが、Element最初の引数として親が追加で必要です。

>>> child2 = etree.SubElement(root, "child2")
>>> child3 = etree.SubElement(root, "child3")

したがって、ドキュメントを作成してから、上記の方法のいずれかを言って使用し、要素channel = rss.find("channel")にさらにアイテムを追加できるはずです。channel

于 2010-01-20T23:53:19.633 に答える
3
channel = E.channel(E.title("Page Title"), E.link(""),E.description(""))
    for (title, link, description) in container:
        try:
                    mytitle = E.title(title)
                    mylink = E.link(link)
                    mydesc = E.description(description)
            item = E.item(mytitle, mylink, mydesc)
                except ValueError:
                    print repr(title)
                    print repr(link)
                    print repr(description)
                    raise
        channel.append(item)
    top = page = E.top(channel)
于 2010-01-21T17:39:36.997 に答える