xmlns
我在根目录中有以下代码示例:
<ol class="stan">
<li>Item one.</li>
<li>
<p>Paragraph one.</p>
<p>Paragraph two.</p>
</li>
<li>
<pre>Preformated one.</pre>
<p>Paragraph one.</p>
</li>
</ol>
我想对第一个项目执行不同的操作,<li>
具体取决于它所在的标签类型,或者没有标签,即<li>
样本中的第一个。
编辑:
我追求任务的逻辑被证明是不正确的。
- 如何查询
<li>
没有后代的第一个列表项?
我试过否定:
@doc.xpath("//xmlns:ol[@class='stan']//xmlns:li/xmlns:*[1][not(p|pre)]")
这与我认为我所要求的完全相反。
我想我让表达变得更加复杂,因为我找不到正确的解决方案。
更新:
Navin Rawat 在评论中回答了这个问题。正确的代码是:
@doc.xpath("//xmlns:ol[@class='stan']/xmlns:li[not(xmlns:*)]")
更正:
正确的问题涉及 XPath 搜索和 Nokogiri 方法。
给定上面的xhtml
代码,我如何使用 搜索第一个后代xpath
?以及如何xpath
在条件语句中使用,例如:
@doc.xpath("//xmlns:ol[@class='stan']/xmlns:li").each do |e|
if e.xpath("e has no descendants")
perform task
elsif e.xpath("e first descendant is <p>")
perform second task
elsif e.xpath("e first descendant is <pre>")
perform third task
end
end
我不是要完整的代码。Nokogiri
只是上面代码中括号中的部分。