2015-10-28 9 views
6

何とかデフォルトのテキスト値を持つ要素を作成できますか?だから私はこれのようにする必要はありませんか?Python lxmlサブ要素のテキスト値は?

from lxml import etree 

root = etree.Element('root') 
a = etree.SubElement(root, 'a') 
a.text = 'some text' # Avoid this extra step? 

つまり、SubElementに属性を指定できますが、テキストを指定する方法はありません。

答えて

3

私はそれを行う組み込み方法はないと思いますが、何度もそれをやっていると、サブ要素の作成とテキストの設定をカプセル化する関数を書くほうがよいかもしれません。例 - その後、

def create_SubElement(_parent,_tag,attrib={},_text=None,nsmap=None,**_extra): 
    result = etree.SubElement(_parent,_tag,attrib,nsmap,**_extra) 
    result.text = _text 
    return result 

として、あなたの要素を作成する - これはあなたがキーワード引数を使用して名前_textと属性を作成することができないであろうと、あなたはattribキーワードを使用する必要があり、注意してください

a = create_SubElement(root,'a',_text="Some text") 

それに対する議論。

+0

私はこれを解決策だと思っていましたが、このエラーが発生しました: 'グローバル名 'text'が定義されていません。 – Andrius

+0

ああ、あなたのコードの誤植だと思います。 'result.text = _text' – Andrius

+0

いくつかの引数のための先頭のアンダースコアは何ですか?また、なぜあなたは' attrib'と 'nsmap'の引数を無視していますか? – BlackJack

1

次はどうですか?

etree.SubElement(root, "a").text = "some text" 

結果要素を変数に割り当てる必要がない場合にのみ機能します。

+0

実際には、別の要素の親として使用されるため、変数に代入する必要があります – Andrius

関連する問題