【问题标题】:Need a xpath : where parent having multiple child, but i required only parent value需要一个xpath:父母有多个孩子,但我只需要父母的价值
【发布时间】:2015-06-22 05:10:21
【问题描述】:

在下面的代码中:父“div”具有三个子“span”、“script”和“span”。但我需要“N/A”的父“div”的值。 “N/A”不属于 div 的任何属性。它只是父“div”的一个值。

<div class="ah-text-align-right ah-font-xsmall" style="">
     <span id="_dcmanageinvestmentsportlet_WAR_ahdcmnginvportlet__FDROR_110hidden" style="display:none">
     <script type="text/javascript">
     <span class="ah-float-left">
N/A 

</div>

【问题讨论】:

  • xpath /div 不够吗?
  • normalize-space(//div)
  • //div[text()='N/A']
  • //div[text()='N/A'] 没有用,因为我们不能用 N/A 硬编码它,它也可以是任何其他值。但 normlize-space 对我有用。非常感谢您的帮助。因为我从很久以前就被困在这上面了。

标签: xpath


【解决方案1】:

为了获得 父元素,您可以在子元素 xpath 之后使用双点 ..。 要获取元素的 text,您可以使用 xpath text() 函数,但取决于 xpath 在您使用的任何环境和代码中的实现,它可能不可用。请注意,元素的文本将返回该元素的实际文本节点以及子元素的所有文本节点。

如果您使用 ah-float-left 类搜索 span 的父级,则 xpath 应该类似于以下内容:

//span[@class='ah-float-left']/..

要获取父母的文本,您需要以下内容:

//span[@class='ah-float-left']/../text()

注意:按类名查找元素可能会返回一个元素集合,而这些元素又会返回给您父元素集合和父节点文本集合,这可能不是您所希望的。我建议通过id 查找子元素,因为xhtml 规定元素ID 是唯一的。因此,父 div 的 xpath 应该如下所示:

//span[@id='_dcmanageinvestmentsportlet_WAR_ahdcmnginvportlet__FDROR_110hidden']/..

【讨论】:

  • //span[@class='ah-float-left']/../text() :这个xpath也可以按照我的要求工作。谢谢爱德华。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多