【问题标题】:Getting element by undefined tag name通过未定义的标签名称获取元素
【发布时间】:2016-10-12 15:33:40
【问题描述】:

我正在使用 minidom 在 Python 中解析一个 xml 文档。

我有一个元素:

<informationRequirement>
  <requiredDecision href="id"/>
</informationRequirement>

我唯一需要的是子元素中 href 的值,但它的标签名称可以不同(例如 requiredKnowledge 而不是 requiredDecision;它总是以 必需的)。 如果标签总是相同的,我会使用类似的东西:

element.getElementsByTagName('requiredDecision')[0].attributes['href'].value

但事实并非如此。知道标签名称不同,有什么可以替代这个?

(总会有一个子元素)

【问题讨论】:

  • 如果requiredKnowledgerequiredDecision 具有不同的href 值怎么办?
  • 这会是个问题,但不可能。只能有一个子元素。

标签: python xml-parsing minidom


【解决方案1】:

如果你总是保证有一个子元素,只需抓住那个元素:

element.childNodes[0].attributes['href'].value

但是,这很脆弱。一个(也许)更好的方法可能是:

hrefs = []
for child in element.childNodes:
  if child.tagName.startswith('required'):
    hrefs.append(child.attributes['href'].value)

【讨论】:

  • for element in xml_doc.getElementsByTagName('informationRequirement'): print(element.getElementsByTagName('requiredDecision')[0].attributes['href'].value) print(element.childNodes[0].attributes['href'].value)
  • 第一个打印输出正确,第二个什么也不做。对不起,三个 cmets,我还不知道如何编辑它们。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-06
  • 2011-07-17
  • 1970-01-01
相关资源
最近更新 更多