gpt4 book ai didi

xml - 如何获取基于 'Minimal Xpath' 的文本?

转载 作者:行者123 更新时间:2023-12-02 23:09:13 25 4
gpt4 key购买 nike

我正在查看 Firebug 中的页面,并且已经确定了我需要从中获取文本的内容的不同部分。 Firebug 提供复制 Xpath 或最小 Xpath 的功能。

Xpath: /html/body/div[2]/div/div[2]/div[2]/form/div[2]/div/span[2]/input
Minimal Xpath: //*[@id="SeatCount"]

我正在尝试为greasemonkey编写一个脚本,该脚本可以根据此内容获取文本。我能够使用这一点从其中一个字段获取内容:

 var returnedValue = document.getElementById("SeatCount").textContent;

我想知道是否可以使用 Xpath 或更好的“最小 Xpath”来实现类似的目标(我不知道“最小 Xpath”是否有该格式所用的更具体的名称?)

是否可以使用 xpath 选项来获取关联的文本内容?如果是这样,怎么办?

最佳答案

标记为“XPath”的路径表示您要选择的元素的绝对位置路径,作为从根节点开始的一系列步骤。它基于位置谓词,这意味着如果您添加或删除文件结构中的任何内容,它的位置路径可能会更改。

名为“Minimal XPath”的路径是一个使用“*descendant-or-self”的表达式。它也从根节点开始,但匹配整个文件中具有 id任何元素包含值 SeatCount 的属性。这通常更好,因为您不依赖于文件结构,并且 id 可以保证您检索到唯一的结果。

您可以使用 evaluate 函数在 JavaScript 中选择使用 XPath。例如:

var result = document.evaluate('//*[@id="SeatCount"]', document, null, XPathResult.ANY_UNORDERED_NODE_TYPE, null );

更正:我在上面的答案中将node替换为result,并更改了节点类型常量。正如 @MartinHonnen 正确观察到的,evaluate() 不返回节点,而是返回一个可以从中提取节点的对象。在这种情况下,由于您只有一个结果,因此可以使用 singleNodeValue 来获取该节点。如果您的节点有文本内容,您可以使用以下方法检索该内容:

var contents = result.singleNodeValue.textContent;

参见 MDN: XPath JavaScript documentationMDN: Using XPath

关于xml - 如何获取基于 'Minimal Xpath' 的文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24149774/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com