我對(duì)這個(gè)領(lǐng)域很陌生,所以我相信這只是顯而易見的事情。我正在嘗試更改一個(gè) python 腳本,以便它以不同的方式找到一個(gè)節(jié)點(diǎn),但我收到一個(gè)“無效謂詞”錯(cuò)誤。import xml.etree.ElementTree as ETtree = ET.parse("/tmp/failing.xml")doc = tree.getroot()thingy = doc.find(".//File/Diag[@id='53']")print(thingy.attrib)thingy = doc.find(".//File/Diag[BaseName = 'HTTPHeaders']")print(thingy.attrib)那應(yīng)該兩次找到相同的節(jié)點(diǎn),但第二次查找得到錯(cuò)誤。這是 XML 的摘錄:<Diag id="53"> <Formatted>xyz</Formatted> <BaseName>HTTPHeaders</BaseName> <Column>17</Column>我希望我沒有削減太多。基本上,用“@id”找到它是有效的,但我想搜索那個(gè) BaseName 標(biāo)簽。實(shí)際上,我想搜索標(biāo)簽的組合,所以我排列了一個(gè)更復(fù)雜的表達(dá)式,但我無法讓簡單的表達(dá)式起作用!
1 回答

弒天下
TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超8個(gè)贊
問題中的代碼在使用 Python 3.7 時(shí)有效。如果謂詞中等號(hào)前后的空格被刪除,它也適用于早期的 Python 版本。
thingy = doc.find(".//File/Diag[BaseName='HTTPHeaders']")
請(qǐng)參閱https://bugs.python.org/issue31648。
添加回答
舉報(bào)
0/150
提交
取消