我需要检查某个标签是否存在于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