2017-03-14 82 views
1

我想使用XPath variables來匹配用戶定義的標籤並避免XPath注入漏洞。我曾嘗試1xml中的XPath變量

from lxml import etree 
etree.fromstring('<div><p>Hello</p></div>').xpath('.//$var', var='p') 

,但我得到

XPathEvalError: Invalid expression 

我在做什麼錯?

+0

您是否想通過標籤名稱獲取元素? – Andersson

+0

我的XPath表達式比上面更復雜 - 我想在樹中的特定位置找到特定的標籤。標籤名稱未預先知道。 – Flash

+0

我不認爲您可以使用變量來表示表達式中的節點。它必須是一個字面的QName。但是你可以使用通配符和謂詞。以下工作:'etree.fromstring('

Hello

').xpath('.//* [local-name()= $ var]',var ='p')'。 – mzjn

回答

0

不能將變量用作表達式中位置步驟的node test部分。它必須是一個文字名稱。但是你可以使用通配符和謂詞。以下作品:

etree.fromstring('<div><p>Hello</p></div>').xpath('.//*[loca‌​l-name() = $var]', var='p')