0

ドキュメントでは、クラスオブジェクトを開始する方法を説明するために次の行が示されています

class xml.etree.ElementTree.Element(tag, attrib={}, **extra)

その下にそれは言う行があります

extraには、キーワード引数として指定された追加の属性が含まれます。

私は実験を続けてきましたが、これが正確に何を意味するのかはわかりません。たとえば、text属性を追加したいのですが、正しく機能していません。私の議論は、代わりにattrib属性に向かっているようです。

これが私の問題を強調するためのサンプルコードです

>>> import xml.etree.ElementTree as ET
>>> tree = ET.Element('Level 0',text = 'test text')
>>> tree.attrib #This should be empty
{'text': 'test text'}
>>> tree.text #test text should be here
>>> 

以下は、参照用のドキュメントへのリンクです。

http://docs.python.org/3.3/library/xml.etree.elementtree.html#element-objects

4

1 に答える 1

2

それは完全に正しいです。XML タグ属性はElement.attrib構造体に格納されます。

その後、ElementTree 構造を XML に出力すると、その.attrib値を使用して XML 属性が生成されます。

>>> elem = ET.Element('Level0', text='test text')
>>> ET.tostring(elem)
'<Level0 text="test text" />'

関数シグネチャの**keywords構文は、関数呼び出しに対する追加のキーワード引数をキャプチャします。明示的な辞書を渡す、キーワード引数を使用して属性を定義できます。関数定義のドキュメントを参照してください。

したがって、次の 2 つの形式は同等です (ElementTree.Element()呼び出しの場合)。

ET.Element('Level0', text='test text')

ET.Element('Level0', {'text': 'test text'})
于 2013-03-03T22:09:12.827 に答える