如何从包含查询中排除来自子 class 和一些同级文本之后的所有信息?

How to exclude from a contains query all the informations from a child class & after some sibling text?

<root>
  <a></a>
  <b></b>
  <c></c>
  <a></a>
  <d></d>
  <e></e>
  <a></a>
  <a></a>
</root>

在 XML 文档中,如何从包含研究中排除 之后节点的所有信息?

仅从以下位置获取结果:

<a></a>
 <b></b>
 <c></c>
 <a></a>
 <d></d>

我不能只说

的前 2 个答案

首先是

因为有时一个值只存在于

之后

我有这个有效的代码:

//div[contains(@class,'class searched')]/*[contains(text(), 'Text Searched')] | //div[contains(@class,'class searched')]/*[not(contains(@class,'class excluded'))]/*[contains(text(), 'Text Searched')]

感谢您的帮助:)

为清楚起见编辑:

<div Class="TopClass">
    <div Class="ClassA">
        <div Class="ClassB">
        <h3> Text Researched</h3>
            <u1 Class="ClassC">
                <h3> Text Researched</h3>
            </u1>
        </div>
    </div>
    <h4>Other Text</h4>
    <div Class="ClassA">
        <div Class="ClassB">
        <h3> Text Researched</h3>
            <u1 Class="ClassC">
                <h3> Text Researched</h3>
            </u1>
        </div>
    </div>

我只想获取 Class B 和 Class C 之间以及“其他文本”上方的已研究文本。有时“研究的文本”只会出现在“其他文本”下方,我不想得到这个结果,所以 [1] 在那里不起作用。 <h3><h4> 也在代码的其他地方使用。

鉴于此 html

<div class="TopClass">
    <div class="ClassA">
        <div class="ClassB">
        <h3> Text Researched 1</h3>
            <u1 class="ClassC">
                <h3> Text Researched 2</h3>
            </u1>
        </div>
    </div>
    <h4>Other Text</h4>
    <div class="ClassA">
        <div class="ClassB">
        <h3> Text Researched 3</h3>
            <u1 class="ClassC">
                <h3> Text Researched 4</h3>
            </u1>
        </div>
    </div>
</div>

此 XPath 表达式将获得前 2 个 h3 标记
//div[@class="ClassA" and following-sibling::h4[.="Other Text"]]//h3[contains(.,"Text Researched 1")]/text()

结果:

echo -e 'cat //div[@class="ClassA" and following-sibling::h4[.="Other Text"]]//h3/text()\nbye' | xmllint --shell test.html 
/ > cat //div[@class="ClassA" and following-sibling::h4[.="Other Text"]]//h3[contains(.,"Text Researched 1")]/text()
 -------
 Text Researched 1
/ > bye