2015-12-12 60 views
1

我有一個看起來像這樣(簡化)的XML:搜索XML的變量屬性使用Python和ElementTree的

<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: invalid predicate

是這樣的ElementTree的限制?我應該使用別的東西嗎?

回答

4

"SyntaxError: invalid predicate"

file[@id=fileid]是一個無效的XPath表達式,因爲您錯過了屬性值周圍的引號。如果您將報價放在fileid::file[@id="fileid"]附近,表達式將變爲有效,但它不會找到任何內容,因爲它將搜索file元素,其中id等於「fileid」字符串

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

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