如何使用xpath从下面的元素中找到项目?

时间:2017-06-30 08:37:33

标签: xpath

我已经创建了一些xpath表达式来定位第一个项目" s" index"在" h4"之后。但是,我做错了,这就是为什么它根本不起作用。我希望有人可以看看它并给我一个解决方法。 我尝试过:

//div[@id="schoolDetail"][1]/text()  --For the Name
//div[@id="schoolDetail"]//br[0]/text()  --For the PO Box

我希望表达式找到的项目的元素粘贴在下面:

<div id="schoolDetail" style=""><h4>School Detail: <a href="javascript:backToList();">Click here to go back to list</a></h4> GOLD DUST FLYING SERVICE, INC.<br>PO Box 75<br><br>TALLADEGA AL 36260<br> <br>Airport: TALLADEGA MUNICIPAL (ASN)<br>Manager: JEAN WAGNON<br>Phone: 2563620895<br>Email: golddustflyingse@bellsouth.net<br>Web: <br><br><a href="https://www.aopa.org/airports/ASN/business/19978" target="_new">View in AOPA Airports</a> (Opens in new tab) <br><br></div>

顺便说一句,结果值应为:

  1. GOLD DUST FLYING SERVICE,INC。
  2. 邮政信箱75

2 个答案:

答案 0 :(得分:1)

尝试通过适当的索引找到所需的文本节点:

//div[@id="schoolDetail"]/text()[1] // For "GOLD DUST FLYING SERVICE, INC."

//div[@id="schoolDetail"]/text()[2] // For "PO Box 75"

答案 1 :(得分:1)

获取两个元素的定位器:

let searchedProducts = List([product1, product2, product3])  //these are Product instances
let results = Array(realm.objects(Shelf.self)).filter{
    if $0.products.count != searchedProducts.count {
        return false
    }
    for product in $0.products {
        if searchedProducts.index(of: product) == nil {
            return false
        }
    }
    return true
}

说明:

{!! Form::select('сity_from', $cities, isset($tour->сity_from) ? $tour->сity_from : null ) !!} - xPath可以使用方括号中的谓词对值进行排序。

//*[@id='schoolDetail']/text()[position()<3] - 可以是整数,在这种情况下,它会自动与元素的位置进行比较[x]

x - 搜索第二个div,类似于[position()=x]

如果谓词//div[2]不是整数 - 它将自动转换为布尔值,并且仅返回元素,其中x的结果为div[position()=2],例如:

[x] - 搜索前四个div元素,true,但在第5个及以上元素位置将超过4

  

重要提示:请在此页面上查看以下定位器:   https://www.w3schools.com/tags/ref_httpmessages.asp

     

div[position() <= 4] - 将返回每个表格中的每一行! (12发现   元素,与页面上的表格相同)

     

4 <= 4, - 将返回第一个找到的表中的第一行(找到1个元素)