2012-04-12 71 views
0

我需要让每一个operator_id标签属性@name@title属性标记等于一些字符串, 为例进行未能做到这一点:XPath表达式失败,检查属性值

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> 

什么是I D错了吗?

回答

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规范中的样本。

+0

是的,我已经尝试过它,它的工作原理 - 感谢你的回应。 – 2012-04-12 11:55:52