第一个样本:
<ul class="breadcrumbs">
<li><a href="http://www.sample.com/1">Home</a></li>
<li><a href="http://www.sample.com/2">Movies</a></li>
<li><a href="http://www.sample.com/3">Thrilling Action</a></li>
<li><strong>Armageddon</strong></li>
</ul>
第二个样本:
<ul class="breadcrumbs">
<li><a href="http://www.sample.com/1">Home</a></li>
<li><a href="http://www.sample.com/2">Food</a></li>
<li><a href="http://www.sample.com/3">Sweet rice</a></li>
<li><strong>Uncle Ben's Boil-In-Bag Rice</strong></li>
</ul>
这是我走了多远:
/html/body//ul[@class='breadcrumbs']/li[2]/a[contains(., 'Movies') or contains(., 'Cool Gadgets')]
摘录Movies
- 但我也希望它提取Thrilling Action
。
解释:如果第二个<a>
标记的<li>
- 标记包含字符串“Movies”或“Cool Gadgets”,我想提取第二个<a>
- 标记第三个<li>
- 标记。
/html//ul[@class='breadcrumbs']/li[2]/a
/html//ul[@class='breadcrumbs']/li[3]/a
如果li [2]不包含“Movies”或“Cool Gadgets”,我不想提取任何内容!
答案 0 :(得分:2)
如果我做对了,您希望匹配<li>
中的所有<ul>
标记,如果其中一个<li>
包含特殊字符串。你可以使用:
// ul [@ class =“breadcrumbs”和(li [2] / a / text()=“Movies”或li [2] / a / text()=“Cool Gadgets”)] / li [ position()&gt; 1] /一个/文本()
<强>解释强>
1)第一部分//ul[@class="breadcrumbs" and (li[2]/a/text() = "Movies" or li[2]/a/text() = "Cool Gadgets")]
会检查您是否符合您需要的<ul>
标记。
@class="breadcrumbs"
执行您可能期望的操作,如果您的过滤字符串存在,li[2]/a/text() = "Movies" or li[2]/a/text() = "Cool Gadgets"
将返回true。
当然,如果需要,您可以将a/text() = "Movies"
更改为a[contains(text(), "Movies")]
。
2)一旦我们知道我们在正确的位置,我们所要做的就是选择你想要的字段。这是由li[position() > 1]
完成的,它将捕获除第一个之外的每个<li>
。选择文字,你很高兴!
答案 1 :(得分:-2)
与本文档相关的文档类型声明(请参阅DocumentType
)。
这提供了对此文档的子节点DocumentType
节点的直接访问。此节点可以在文档创建时设置,然后通过使用子节点操作方法(例如Node.insertBefore
或Node.replaceChild
)进行更改。
但是,请注意,虽然某些实现可能会实例化不同类型的Document对象,这些对象支持除&#34; Core&#34;之外的其他功能,例如&#34; HTML&#34; [DOM Level 2 HTML]
,基于创建时指定的DocumentType,之后更改它不太可能导致支持的功能发生变化。
coolgadgets