我需要检查xml文件中是否存在某个标记。

例如,我要查看此代码段中是否存在标签:

 <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

最佳答案

假设要获取elem2的值,可以使用xpath来找到它。

tree = etree.parse(StringIO(htmlString), etree.HTMLParser()).getroot()
youWantValue = tree.xpath('/main/elem2')[0].text

10-08 17:06