如果在html页面中不存在另一个div,如何返回div内容?

时间:2013-12-12 15:57:07

标签: xpath

我有以下代码:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html xmlns:fb="http://www.facebook.com/2008/fbml" xmlns:og="http://opengraphprotocol.org/schema/">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<link rel="alternate" hreflang="en" href="http://www.example.com"/>

<div id="" class="pgLinks">
<a href="/example-text" class="guiArw sprite-pagePrev ">&laquo;</a>
<a href="/example-text-2" class="paging taLnk ">1</a>
<span class="paging pageDisplay">2</span>

我需要一个xpath查询来查找此行:

<a href="/example-text-2" class="paging taLnk ">1</a>

如果值为“1”(在我的示例中),那么它会返回包含在其中的网址:

"/example-text-2"

如果值为 NOT “1”,那么我需要在代码顶部返回此标记中包含的网址:

<link rel="alternate" hreflang="en" href="http://www.example.com"/>

返回的网址为:"http://www.example.com"

在这个问题的帮助下,我得到了这个问题:

concat(//link[@hreflang='en']/@href and not(//div[@class='pgLinks']/a[. = '1']/@href), //div[@class='pgLinks']/a[. = '1']/@href)

逻辑有效但我得到的结果是:

A)“false / example-text-2”或B)“True”

我真正想要的只是每次都需要的网址。

1 个答案:

答案 0 :(得分:0)

试试这个:

(//link[@hreflang='en'] | //div[@class='pgLinks']/a[.='1'])[last()]/@href

这是做什么的:

  1. (... | ...)获取link元素和锚元素(如果存在)。
  2. [last()]占用最后一个。请注意,元素将根据它们在文档中出现的顺序进行排序。
  3. @href将返回元素的href属性值。
  4. 关于包含网址主要部分的评论中的问题,是的,在这种情况下是可能的。如果您认为所需的网址是:

    http://www.example.com
    http://www.example.com/example-text-2
    

    您会注意到这是链接href和锚点href的串联。无论锚元素是否存在,都是如此。要获得两个所需的URL,xpath可以简单地为:

    concat( //link[@hreflang='en']/@href, //div[@class='pgLinks']/a[.='1']/@href )