我想将参数传递到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 关注
- 1032 浏览
相关问题推荐
添加回答
举报
0/150
提交
取消