为了账号安全,请及时绑定邮箱和手机立即绑定

如何将变量参数传递到XPath表达式中?

如何将变量参数传递到XPath表达式中?

天涯尽头无女友 2020-02-03 12:42:38
我想将参数传递到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)


查看完整回答
反对 回复 2020-02-03
?
手掌心

TA贡献1942条经验 获得超3个赞

如果您的XPath库提供了类似于XSLT的方式来解释变量的工具,请使用它。由于OP最初并未说明他的语言/图书馆,所以我一般都会回答。许多初学者期望有一个纯粹的XPath解决方案来将变量嵌入XPath中,但还没有。因此,保留此一般答案很有价值。

查看完整回答
反对 回复 2020-02-03
  • 3 回答
  • 0 关注
  • 1032 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信