我想提取以下HTML中的文本.然而,在一个封闭的HTML标记中发生的所有事情以及它之后发生的所有事情都应该被忽略.
HTML以不同的形式出现.
<span class="classA">Text 1 <span class="classB">Text 2</span> Text 3 <span class="classC">Text 4</span> Text 5</span>
预期结果:"文本1文本2文本3"
其他变体:
<span class="classA">Text 1 <span class="classC">Text 2</span></span>
<span class="classA">Text 1 <span class="classC">Text 2</span> Text 3</span>
<span class="classA">Text 1</span>
预期结果:"文本1"
<span class="classA">Text 1 <span class="classB">Text 2</span> Text 3</span>
预期结果:"文本1文本2文本3"
因此,出现一个span元素之后的所有内容都应该被忽略.也有可能"classC"根本不出现.
我已经try 过//span[@class="classA"]//text()[parent::*[not(@class="classC")]]
,它忽略了"classC"内容,但返回<span class="classC">
之后的文本(第一个示例中的文本5).
我如何才能做到这一点?
Update:
有了//span[@class="classC"]//parent::*/preceding::text()
,我就更接近这个问题了.然而,它仍然不适用于<span class="classA">Text 1</span>
,返回注释.