使用Python和XML搜索XML以获取变量属性ElementTree的

时间:2015-12-12 05:07:00

标签: python xml xpath xml-parsing elementtree

我的XML看起来像这样(简化):

<file id="file-10">
  <clip>1</clip>
  <timecode>1:00:00:00</timecode>
</file>
<file id="file-11">
  <clip>2</clip>
  <timecode>2:00:00:00</timecode>
</file>

我正在尝试使用ElementTree搜索具有特定id属性的文件元素。 这有效:

correctfile = root.find('file[@id="file-10"]')

这不是:

fileid = 'file-10'
correctfile = root.find('file[@id=fileid]')

我明白了:

  

SyntaxError:无效谓词

这是ElementTree的限制吗?我应该使用其他东西吗?

1 个答案:

答案 0 :(得分:4)

  

“SyntaxError:无效谓词”

file[@id=fileid]是无效的XPath表达式,因为您错过了属性值周围的引号。如果你在fileidfile[@id="fileid"]周围加上引号,那么表达式就会生效,但它找不到任何内容,因为它会搜索fileid元素到“fileid”字符串

使用字符串格式fileid值插入XPath表达式:

root.find('file[@id="{value}"]'.format(value=fileid))