3

数週間前に複数の要素を追加することについて質問しましたが、現在、同様の問題に遭遇しています。次のような XML を作成する必要があります。

<embossed>
   <line>Test Line</line>
   <line>Test Line 2</line>
   <line>Test Line 3</line>
</embossed>

LXML objectify.Element() メソッドを使用して、同じ要素を異なるテキストで連続して N 回作成する方法がわかりません。私はこれを試しました:

embossed = objectify.Element('embossed')
embossed.line = objectify.Element("line")
embossed.line = objectify.Element("line")

しかし、「エンボス」要素内に「線」要素が 1 つしかないことになります。誰もこれを行う方法を知っていますか? ありがとう!

4

1 に答える 1

3

embossed代わりに、次の行を に追加するだけです。

embossed = objectify.Element('embossed')
embossed.append(objectify.Element('line'))
embossed.line[-1] = 'Test Line'
embossed.append(objectify.Element('line'))
embossed.line[-1] = 'Test Line 2'

各 lxml ツリー タグは、すべての子がリスト内の要素であるリストのように機能します。新しいobjectify.Elementオブジェクトを追加するだけで、追加先のタグの子になります。

次に、インデックスを使用してそのリストの各要素に到達できます。インデックスは最後の要素であり、-1テキストを設定できます。

上記のコードは次を出力します。

>>> from lxml import objectify, etree
>>> embossed = objectify.Element('embossed')
>>> embossed.append(objectify.Element('line'))
>>> embossed.line[-1] = 'Test Line'
>>> embossed.append(objectify.Element('line'))
>>> embossed.line[-1] = 'Test Line 2'
>>> print etree.tostring(embossed, pretty_print=True)
<embossed xmlns:py="http://codespeak.net/lxml/objectify/pytype" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" py:pytype="TREE">
  <line py:pytype="str">Test Line</line>
  <line py:pytype="str">Test Line 2</line>
</embossed>
于 2012-09-25T16:00:03.043 に答える