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

我想将参数传递到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但是没有用。


天涯尽头无女友
浏览 1033回答 3
3回答

翻过高山走不出你

这取决于您使用XPath的语言。在XSLT中:&nbsp;"//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中:&nbsp;"//a/b/c[x={}]".format(myParamForXAttribute)

手掌心

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