我想將參數傳遞到XPath表達式中。(//a/b/c[x=?],myParamForXAttribute)我可以使用XPath 1.0做到這一點嗎?(我嘗試過,string-join但XPath 1.0中沒有)那我該怎么辦呢?我的XML看起來像<a> <b> <c> <x>val1</x> <y>abc</y> </c> <c> <x>val2</x> <y>abcd</y> </c></b></a>我想獲得<y>x元素值為的元素值val1我嘗試過,//a/b/c[x='val1']/y但是沒有用。
3 回答

翻過高山走不出你
TA貢獻1875條經驗 獲得超3個贊
這取決于您使用XPath的語言。
在XSLT中:
"//a/b/c[x=$myParamForXAttribute]"
請注意,與上面的方法不同,下面的三個對XPath注入攻擊開放,決不能與不受控制或不受信任的輸入一起使用。為避免這種情況,請使用您的語言或庫提供的機制來帶外傳遞變量。 [ 信用:查爾斯達菲]
在C#中:
String.Format("//a/b/c[x={0}]", myParamForXAttribute);
在Java中:
String.format("//a/b/c[x=%s]", myParamForXAttribute);
在Python中:
"//a/b/c[x={}]".format(myParamForXAttribute)

手掌心
TA貢獻1942條經驗 獲得超3個贊
如果您的XPath庫提供了類似于XSLT的方式來解釋變量的工具,請使用它。由于OP最初并未說明他的語言/圖書館,所以我一般都會回答。許多初學者期望有一個純粹的XPath解決方案來將變量嵌入XPath中,但還沒有。因此,保留此一般答案很有價值。
- 3 回答
- 0 關注
- 1056 瀏覽
相關問題推薦
添加回答
舉報
0/150
提交
取消