Python Lxml(对象化): Checking whether a tag exists

标签 python xml lxml objectify

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

例如,我想看看这个代码段中是否存在标签:

 <main>
       <elem1/>
       <elem2>Hi</elem2>
       <elem3/>
       ...
 </main>

目前,我正在使用带有错误检查功能的丑陋 hack,如下所示:

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

最佳答案

hasattr() 适用于此:

if hasattr(root, 'elem1'):
    foo = root.elem1

关于Python Lxml(对象化): Checking whether a tag exists,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5385821/

相关文章:

python - 在python中使用lxml解析嵌套的html列表

python - scipy.integrate.tplquad 对于大体积积分给出错误结果

python - django查询问题

java - TextView 不在应用程序中居中,但在 match_constraint 中居中

c# - 将未加密的标签数据附加到加密文件

c# - 忽略 DOCTYPE .dtd,但 .dtd 文件必须仍然存在

python - 查找具有特定属性值的所有标签

python - 对具有初始条件的方程使用 scipy solve_ivp

python - 创建空的 conda 环境

python - 我可以使用 python、selenium 和 lxml 解析 xpath 吗?