HTMLに次のものが含まれているとします。
<div tagname="779853cd-355b-4242-8399-dc15f95b3276_Destination" class="panel panel-default"></div>
XPathで次の式を作成するにはどうすればよいですか。
tagname
属性が文字列 'Destination'で終わる<div>
要素を検索します
私は何日も探していましたが、うまくいくものを思い付くことができません。多くの中で、私は例えば試しました:
div[contains(@tagname, 'Destination')]
//div[ends-with(@tagname, 'Destination')]
//div[substring(@tagname,string-length(@tagname) -string-length('Destination') +1)
= 'Destination']
XPath 2または3:常に正規表現があります。
.//div[matches(@tagname,".*_Destination$")]
ends-with
(Xpath 2.0)を使用できます
//div[ends-with(@tagname, 'Destination')]
Xpath1.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"/>