15

HTML に以下が含まれているとします。

  <div tagname="779853cd-355b-4242-8399-dc15f95b3276_Destination" class="panel panel-default"></div>

XPath で次の式をどのように記述しますか。

属性が文字列 'Destination' で終わる<div>要素を見つけますtagname

私は何日も探していましたが、うまくいくものを思いつくことができません。多くの中で、私は例えば試しました:

div[contains(@tagname, 'Destination')]
4

4 に答える 4

27

XPath 2.0

//div[ends-with(@tagname, 'Destination')]

XPath 1.0

//div[substring(@tagname, string-length(@tagname) 
                          - string-length('Destination') + 1)  = 'Destination']
于 2016-12-02T15:28:11.440 に答える
6

XPath 2 または 3: 常に正規表現があります。

.//div[matches(@tagname,".*_Destination$")]
于 2016-12-03T17:47:36.980 に答える
2

Xpath 1.0 で動作する以下の xpath を使用できます。

//div[string-length(substring-before(@tagname, 'Destination')) >= 0 and string-length(substring-after(@tagname, 'Destination')) = 0 and contains(@tagname, 'Destination')]

基本的に、最初に出現する文字列の前に文字列がある (または文字列がない) かどうかをチェックしますが、文字列のDestination後にテキストがあってはなりません。Destination

テスト入力:

<root>
<!--Ends with Destination-->
<div tagname="779853cd-355b-4242-8399-dc15f95b3276_Destination" class="panel panel-default"></div>
<!--just Destination-->
<div tagname="Destination" class="panel panel-default"></div>
<!--Contains Destination-->
<div tagname="779853cd-355b-4242-8399-dc15f95b3276_Destination_some_text" class="panel panel-default"></div>
<!--Doesn't contain destination-->
<div tagname="779853cd-355b-4242-8399-dc15f95b3276" class="panel panel-default"></div>
</root>

テスト出力:

<div class="panel panel-default"
     tagname="779853cd-355b-4242-8399-dc15f95b3276_Destination"/>
<div class="panel panel-default" tagname="Destination"/>
于 2016-12-02T15:27:03.533 に答える