我的 XML 文档任意嵌套了部分。 鉴于引用了特定章节, 我需要在该节中找到所有 < code> TextNode 。 不包括小节 em > 。
例如,如果引用下面的
<root>
<section id="a1">
<b>A1 <c>A1</c></b>
<b>A1 <c>A1</c></b>
<section id="a1.1">
<b>A1.1 <c>A1.1</c></b>
</section>
<section id="a1.2">
<b>A1.2 <c>A1.2</c></b>
<section id="a1.2.1">
<b>A1.2.1</b>
</section>
<b>A1.2 <c>A1.2</c></b>
</section>
</section>
<section id="a2">
<b>A2 <c>A2</c></b>
</section>
</root>
id
属性在真实世界文档中可能不存在 。 instrong>
现在我想到的最好办法就是 找到这个区域里的所有文本节点 然后用Ruby来减掉那些我不想的节点
def own_text(node)
node.xpath( .//text() ) - node.xpath( .//section//text() )
end
doc = Nokogiri.XML(mydoc,&:noblanks)
p own_text(doc.at("#a1")).length #=> 4
我可以制作一个 XPath 1. 0 的单一表达式来直接找到这些节点吗? 类似 :
.//text()[ancestor::section = self] # self being the original context node