我需要檢查某個標籤是否存在於xml文件中。Python Lxml(objectify):檢查標籤是否存在
例如,我想看看在這個片段中存在標籤:
<main>
<elem1/>
<elem2>Hi</elem2>
<elem3/>
...
</main>
目前這個樣子,我使用的是醜陋的黑客攻擊,錯誤檢查,:
try:
if root.elem1.tag:
foo = elem1
except AttributeError:
foo = "error finding elem1"
我也想要自定義字符串,如果它無法找到節點(即「無法找到-tagname-」)。
我必須檢查一長串變量,我不想重複代碼100次。
有什麼建議嗎?
編輯:
下面是實際的XML文件的剪斷:
<main>
<asset name="Virtual Dvaered Unpresence">
<virtual/>
<presence>
<faction>Dvaered</faction>
<value>-1000.000000</value>
<range>0</range>
</presence>
</asset>
<asset name="Virtual Empire Small">
<virtual/>
<presence>
<faction>Empire</faction>
<value>100.000000</value>
<range>2</range>
</presence>
</asset>
</main>
我要檢查標籤是否存在,如果是的話,得到的內容。
編輯編輯: 好吧,我要結合兩個答案,但我只能投一個答案。抱歉。
編輯3:有關XPath位置相關的問題:Python lxml (objectify): Xpath troubles
如果節點不存在,會發生什麼?它會給出一個錯誤,還是一個空白值? – Biosci3c 2011-03-22 05:44:49
@ Biosci3c該具體示例給出了一個錯誤,到'[0]'試圖解引用由xpath調用返回的第一個值,如果在解引用之前檢查列表是否爲空,則另一方面,您將進行一個沒有錯誤的測試。順便說一下,我發現這是所給出的最佳實踐答案。 – 2011-03-22 11:45:45
好吧,我喜歡XPATH的建議,所以我也會使用它。順便說一句,我認爲你錯過了在頂部末尾的右括號線。 – Biosci3c 2011-03-28 02:39:47