基本问题 - 当您构建树时,如何在树中“移动”。Python - lxml - 构建树时如何在树周围“移动”
我可以填充第一级:
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
我看不到如何“点”的子元素调用到下一个节点下来 - 我想:
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)
因为我给子元素调用一个字符串,而不是一个元素的参考。我也试过它作为一个变量(即link_0' rather than
“link_0”`),并给出了一个全局缺失变量,所以我的引用显然是不正确的。
如何将我的lxml构建器作为父项指向孩子,然后编写新的孩子?
无关:您可以[使用TreeBuilder和标记模块的缩进文本构建xml树](http://stackoverflow.com/a/12166627//4279) – jfs