XPath不包含且在

时间:2017-09-27 13:28:26

标签: xpath

我有一些结构如下:

<h1><span id="One"></span><span id="Yellow">One</span></h1>

<h2><span id="door"></span><span id="White">door</span></h2>
<p>door</p>
<ul>
<li>Intel CPU</li>
</ul>
<h2><span id="door"></span><span id="White">door</span></h2>
<p>AMD CPU</p>
<ul>
<li>Elbrus CPU</li>
</ul>

<h1><span id="One more"></span><span id="Yellow">One more</span></h1>

<h2><span id="door"></span><span id="White">door</span></h2>
<p>door</p>
<ul>
<li>Intel II CPU</li>
</ul>
<h2><span id="door"></span><span id="White">door</span></h2>
<p>AMD II CPU</p>
<ul>
<li>Elbrus II CPU</li>
</ul>

<h1><span id="Something></span></span><span id="Not Yellow">Something</span></h1>

<h2><span id="door"></span><span id="White">door</span></h2>
<p>door</p>
<ul>
<li>Intel III CPU</li>
</ul>
<h2><span id="door"></span><span id="White">door</span></h2>
<p>AMD III CPU</p>
<ul>
<li>Elbrus III CPU</li>
</ul>

我怎样才能获得包含&#34;英特尔&#34;,&#34; AMD&#34;,&#34; ELbrus&#34;, h1 后的字符串< strong> span ,包含 ID =&#34;一个*&#34; ,但不包含 h1 span ,不包含 ID =&#34;一个*&#34; (仅在他面前)。

编辑:

如何才能获得以下字符串:

Intel CPU
AMD CPU
Elbrus CPU

Intel II CPU
AMD II CPU
Elbrus II CPU

我已经使用过:

// H1 /跨度[否(含有(&#34;一个&#34)。)] /前述:: P [含有(文本()&#34; AMD&#34)] | // H1 /跨度[否(含有(&#34;一个&#34;))] /前述:: p [共ntains(文本()&#34;英特尔&#34; )] | // H1 /跨度[不(共ntains(&#34;一个&#34;))] / PR eceding :: p [含有(文本()&#34;厄尔布鲁士&# 34)] | // H1 /跨度[否(含有(&#34;一个&#34;))] / precedin克::的Li [含有(文本()&#34 ;英特尔&#34)] | // H1 /温泉N [否(含有(&#34;在E&#34;))] /前述::的Li [含有(文本(),& #34; AMD&#34)] | // H1 /跨度[不(共ntains(&#34;一个&#34;))] / PR eceding ::的Li [含有(文本( )&#34;厄尔布鲁士&#34)]

但它不起作用。

1 个答案:

答案 0 :(得分:2)

假设在您选择的文字示例中Elbrus III CPU确实应该是Elbrus II CPU,这应该有用......

//text()[(contains(.,'Intel') or contains(.,'AMD') or contains(.,'Elbrus')) and preceding::h1[1][span[contains(@id,'One')]]]