我是python和xml解析的新手,所以这可能是一个非常愚蠢的问题。如果根目录未知,测试给定元素是否为根的最佳方法是什么?例如,给定一个通用的test.xml结构;
<root>
<child1>
<child2>
<child3>Some Text</child3>
你有一个只接受元素的函数。我到目前为止唯一的方法就是这样,但需要函数知道root
from lxml import etree as ET
fulltree = ET.parse('test.xml')
root = fulltree.getroot()
def do_stuff_with element (element):
if (element is not root[0].getparent()): #Only works if root is known
#do stuff as long as element is not the root
else:
#if we are at the root, then do nothing
return
最初我试过
if (len(element.getparent()): #return None if the parent
由于lxml处理与列表类似的元素,因此我原以为它会为任何子节点返回值,而对于没有父节点的根则返回None。相反,它会返回错误。
答案 0 :(得分:4)
我之前从未使用过lxml,但是通过查阅文档并稍微考虑一下:root将是唯一没有父级的元素,对吗?
from lxml import etree as ET
fulltree = ET.parse('test.xml')
def do_stuff_with_element(element):
if element.getparent() is None:
print("Element is root")
else:
print("Element is not root")
root = fulltree.getroot()
do_stuff_with_element(root)
do_stuff_with_element(root.getchildren()[0])