0

我需要使用@title属性在标签中获取每个operator_id标签属性@name等于某个字符串,下面的示例无法做到这一点:

List list = doc.selectNodes("//root//menu//group[@title=" + menuTitle + "]//operator_id//@name");

XML结构:

  <group id="980" title="Переводы" image="" sh_n="1" enable="1" visible="0" image_bg="" type="">
  <operator_id id="10000047" name="Перевод физ лицу" image="individual.png" sh_n="1" enable="1" visible="1" /> 
  <operator_id id="10000048" name="Перевод юр лицу" image="organizations.png" sh_n="1" enable="1" visible="1" /> 
  <operator_id id="10000078" name="Перевод внутри банка" image="innerbank.png" sh_n="1" enable="1" visible="1" /> 
  <operator_id id="10000049" name="Налоговый платеж" image="taxes1.png" sh_n="1" enable="1" visible="1" /> 
  </group>

我究竟做错了什么?

4

1 回答 1

2

无论如何,我都不是 XPath 专家,但我认为您不想在查询中一直使用双斜杠。你有没有尝试过:

List list = doc.selectNodes(
   "//root/menu/group[@title=" + menuTitle + "]/operator_id/@name");

? 如果它真的是根元素,即使//在开头也可以。/

此外,我怀疑您应该为该值添加引用,例如

List list = doc.selectNodes(
   "//root/menu/group[@title='" + menuTitle + "']/operator_id/@name");

或者

List list = doc.selectNodes(
   "//root/menu/group[@title=\"" + menuTitle + "\"]/operator_id/@name");

这些更像是 XPath 规范中的示例。

于 2012-04-12T11:42:33.347 回答