为了向现有元素添加新的子元素,我必须调用一个类方法,并将父元素作为参数。我希望创建一个子元素作为即将成为父元素的实例方法,将子元素(来自Element构造函数)作为唯一的形式参数。
实际值:
#!/usr/bin/python
from lxml import etree
root = etree.Element("parent")
childNode = etree.SubElement(root, "child")
预期(想象):
#!/usr/bin/python
from lxml import etree
root = etree.Element("parent")
childNode = root.AddSubElement(etree.Element("child"))
这是lxml的设计者的决定,还是lxml设计的其他部分强加的约束,或者更多的Pythonic,"或者什么?
答案 0 :(得分:3)
您可以这样做,但执行此操作的方法称为append
,而不是AddSubElement
:
childNode = root.append(etree.Element("child"))
lxml tutorial说“这是如此常见,以至于有一种更短,更有效的方法:SubElement工厂”。但是,它使用SubElement
的示例实际上比使用append
的示例略长,并且它没有解释它是如何更有效的,所以我承认我为什么会这么说它感到难过。您可以使用您喜欢的任何语法。
似乎真正的更短的方法是允许您按元素名称追加而不是手动创建Element对象的方法(例如,root.addChild("child")
)。我不知道为什么没有这样的方法,但我相信其他一些XML库都有类似的东西。