基本的な質問-ツリーを構築するときに、ツリー内をどのように「移動」しますか。
最初のレベルにデータを入力できます。
import lxml.etree as ET
def main():
root = ET.Element('baseURL')
root.attrib["URL"]='www.com'
root.attrib["title"]='Level Title'
myList = [["www.1.com","site 1 Title"],["www.2.com","site 2 Title"],["www.3.com","site 3 Title"]]
for i in xrange(len(myList)):
ET.SubElement(root, "link_"+str(i), URL=myList[i][0], title=myList[i][1])
これは私に次のようなものを与えます:
baseURL:
link_0
link_1
link_2
そこから、新しい各ノードからサブツリーを追加して、次のようにします。
baseURL:
link_0:
link_A
link_B
link_C
link_1
link_2
subElement呼び出しを次のノードに「ポイント」する方法がわかりません-試してみました:
myList2 = [["www.A.com","site A Title"],["www.B.com","site B Title"],["www.C.com","site C Title"]]
for i in xrange(len(myList2)):
ET.SubElement('link_0', "link_"+str(i), URL=myList2[i][0], title=myList2[i][1])
しかし、それはエラーをスローします:
TypeError: Argument '_parent' has incorrect type (expected lxml.etree._Element, got str)
subElement呼び出しに要素参照ではなく、文字列を指定しているためです。また、変数(つまり、link_0' rather than
"link_0" `)として試してみましたが、グローバルに欠落している変数が得られるため、参照が明らかに正しくありません。
lxmlビルダーを親として子に「ポイント」し、新しい子を作成するにはどうすればよいですか?