簡體   English   中英

xml.etree.ElementTree getElementByID()?

[英]xml.etree.ElementTree getElementByID()?

如何使用Python庫xml.etree.ElementTree獲得等效的getElementByID()

似乎有一個叫做parseid()的方法,但是我的樹已經被解析了。 我不想再次解析它。

我自己找到了它:

tree.findall('''.//*[@id='fooID']''')[0]

仍然歡迎更好或其他解決方案。 :-)

可接受的答案確實有效,但是性能可能會非常糟糕,因為-我的猜測是,我沒有驗證這一點,也許還與xpath的復雜性有關-遍歷每一個樹到findall() ,這可能會或可能不會請關注您的用例。

如果您擔心性能,那么也許parseid()確實是您想要的。 如果要在現有樹上獲取此類id映射,則還可以輕松地手動執行一次遍歷。

class getElementById():

    def __init__(self, tree):
        self.di = {}

        def v(node):
            i = node.attrib.get("id")
            if i is not None:
                self.di[i] = node

            for child in node:
                v(child)

        v(tree.getroot())


    def __call__(self, k):
        return self.di[k]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM