提问者:小点点

文本节点的XPath,其祖先具有包含特定文本字符串的后代


我试图找到DOM中紧跟在前一个文本节点之后的文本节点的xpath--但它们不是兄弟,它们的xpath关系可能会改变。

我使用祖先和后代是因为uniqueID和text以及uniqueID和$amount之间的元素数量发生了变化。

我的最佳猜测(这不起作用)://text()[contains(.,“$”)][祖先::div[1]//*[text()[contains(.,“uniqueText”)]][祖先::div[@id=“uniqueID”]]

我认为'div[1]'返回的是顶部的div,而不是uniqueText上面最接近的div

<div id="unique">
    <div>
        <h4></h4>
            <div>
                <div>
                    <div>
                        <span>
                            <span>
                                <span>uniqueText
                                </span>
                            </span>
                        </span>
                        <div>
                            <div>
                                <p>$xxx</p>
                            </div>
                        </div>

共1个答案

匿名用户

您的问题不完全清楚(html示例无效),但如果我正确理解了您的意思,并且您希望从文本开始并获得$amount,其中它们都位于最接近的公共

祖先下,并且$amount包含在该公共祖先下的单个

标记中,那么在实际html上尝试这样做

div[@id="unique"]//span[contains(./text()[1],"uniqueText")]/ancestor::div[1]/div[contains(.//p/text(),"$")]//p/text()

看看是否管用。