我有一个看起来像这样的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的限制吗?我应该使用其他东西吗?

最佳答案

“ SyntaxError:无效谓词”


file[@id=fileid]是无效的XPath表达式,因为您错过了属性值周围的引号。如果将引号放在fileidfile[@id="fileid"]周围,则表达式将变为有效,但不会找到任何内容,因为它将搜索file等于“ fileid”字符串的id元素。

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

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

关于python - 使用Python和ElementTree在XML中搜索变量属性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34236514/

10-12 16:45