XPath的主要目的是解决XML文档的各个部分。它还提供操纵弦乐,数字和布尔值的基本设施。 XPath使用紧凑的非XML语法。 XPath在XML文档的抽象逻辑结构上运行,而不是表面语法。
我需要组合两个 XPath 表达式,第二个是第一个的子表达式。理想情况下我会这样做: (//nav[@class='header__nav'])(/button|/div) 但这不起作用。 我知道我可以做到“事实上...
我需要组合 2 个 xpath 表达式,第二个是第一个的子表达式。理想情况下我会这样做: (//nav[@class='header__nav'])(/button|/div) 但这不起作用。 我知道我可以“事实上”...
我想抓取谷歌搜索结果来收集 IMDB url。每次我使用 //ol[@id="rso"]//li[@class="g"] 进行 xpath 查询时,DOMNodelist 都是空的,没有返回任何内容。使用 var_dump 进行调试...
我需要从此元素的类中检索子元素: 我需要从此元素的类中检索子元素: <td data-automation-id="horse-racing-section-row-1-meeting-cell" class="meetingCellDesktopMediumAbove_femjjxq"> 这些是上面元素的子元素: <a href="/horse-racing/australia-nz/ballarat"> <div class="meetingCellInternalContainerAbove_fyg3mg0"> <div class="leftCellContainer_frjo067"> <span class="size14_f7opyze medium_f1wf24vo meetingName_f1jzu4qi" data-automation-id="horse-racing-section-row-1-meeting-name">Ballarat</span> 我已经使用了所有这些方法来尝试找到它: races = driver.find_elements(By.XPATH, "//td[@class, 'meetingCellDesktopMediumAbove_femjjxq']") races = driver.find_elements(By.XPATH, "//td[contains(@class, 'meetingCellDesktopMediumAbove_femjjxq')]") races = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "//td[contains(@class, 'meetingCellDesktopMediumAbove_femjjxq')]"))) races = WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH, "//td[contains(@class, 'meetingCellDesktopMediumAbove_femjjxq')]"))) races = WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH, "//td[@class, 'meetingCellDesktopMediumAbove_femjjxq']"))) races = driver.execute_script('return document.querySelectorAll("td.meetingCellDesktopMediumAbove_femjjxq")') races = driver.find_elements(By.CSS_SELECTOR, 'meetingCellDesktopMediumAbove_femjjxq') races = WebDriverWait(driver, 10).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, 'td.meetingCellDesktopMediumAbove_femjjxq'))) 当我尝试时: for race in races: print(race.text) 它什么也不返回。 错误方式://td[@class, 'meetingCellDesktopMediumAbove_femjjxq'] 正确://td[@class='meetingCellDesktopMediumAbove_femjjxq'] 如果你使用 contains(),最好把“_femjjxq”部分剪掉://td[contains(@class, 'meetingCellDesktopMediumAbove')]
如何列出“子”节点的所有属性(在本例中为“名称”和“id”,并在循环中获取它们的值以单独捕获?
child2_Parent_1 child4_Parent_1 <Children name='Children'> <child name='Child_2' id='2'>child2_Parent_1</child> <child name='Child_4' id='4'>child4_Parent_1</child> <child name='Child_1' id='3'>child1_Parent_1</child> <child name='Child_3' id='1'>child3_Parent_1</child> </Children> <Children name='Children'> <child name='Child_1' id='8'>child1_parent2</child> <child name='Child_2' id='7'>child2_parent2</child> <child name='Child_4' id='6'>child4_parent2</child> <child name='Child_3' id='5'>child3_parent2</child> </Children> 我看到的所有其他帖子都显示获取特定命名节点属性的值。我想动态获取节点的属性名称(我可能不知道)并获取值。任何帮助将不胜感激。 这实际上取决于 XML,在这种情况下,要获取所有 child 节点,您可以使用 XPath //child 然后获取属性,您可以从 .Attributes 获取它们,假设您提前不知道它们,例如,如果您想从这些示例 XML 动态构造一个对象: $xml = [xml] @' <Children name='Children'> <child name='Child_2' id='2'>child2_Parent_1</child> <child name='Child_4' id='4'>child4_Parent_1</child> <child name='Child_1' id='3'>child1_Parent_1</child> <child name='Child_3' id='1'>child3_Parent_1</child> </Children> '@ 你可以这样处理: $xml.SelectNodes('//child') | ForEach-Object { $obj = [ordered]@{} foreach ($attribute in $_.Attributes) { $obj[$attribute.Name] = $attribute.Value } $obj['InnerText'] = $_.InnerText [pscustomobject] $obj } 结果是: name id InnerText ---- -- --------- Child_2 2 child2_Parent_1 Child_4 4 child4_Parent_1 Child_1 3 child1_Parent_1 Child_3 1 child3_Parent_1
如何在 TypeScript 中使用 xml-crypto 在 XML 签名中添加对 KeyInfo 的引用?
我正在开发一个项目,使用 TypeScript 中的 xml-crypto 包来签署 XML 文档。我的目标是对 XML 进行签名并在同一签名中包含对 KeyInfo 元素的引用。 这里'...
XForms 刷新不起作用? (XSLTForms 1.7)
我需要从 Javascript 内部更改 XForms 实例数据。 对 XML 的实际修改似乎有效 - 但 UI 没有更新 - 尽管我明确刷新了 XForms - 我尝试了这两种方法...
我有三个具有相同按钮类和跨度类名称的元素。我想使用 xpath 来选择第二个跨度类,但我总是出错。 我用过: browser.find_element(By.XPATH, "...
<oc-resume-upload> <div data-test="resume-upload-container" class="form-section"> <div class="flex flex-column"> <h2 class="form-section-header form-section-header--required"> **Resume **</h2> <div> <div> <div ocappdrag="" class="dropzone dropzone-upload"> <oc-file-upload-button _nghost-ng-c1329912542=""> <div _ngcontent-ng-c1329912542=""> **<button _ngcontent**-ng-c1329912542="" type="button" data-test="resume-upload" aria-label="Upload resume" class="padding--m button button--clean"> <span class="font-size--s font--bold"> <strong>Select file</strong>, or drop file here </span> </button> 所以基本上我当前的节点是 button _ ngcontent 并且我想找到他的祖先或祖先的孩子中可用的第一个内容(以文本类型)。在这种情况下,我想要包含“Resume”作为内容的 h2 标签的文本。 './ancestor::*[normalize-space(.//*)][1]' 此代码允许在祖先或祖先的任何后代中查找文本,但问题是,它也找到我的后代。因此,我从我不想要的标签中得到“选择文件”。 ./ancestor::*[normalize-space(string(.)) and not(self::*) and not(.//*)][1] 应该是有效的,因为我排除了我的节点和我的节点后代,但在这种情况下我没有找到任何东西...... h2 不是祖先;也许可以尝试preceding::... ./preceding::*[text()[normalize-space()]][1] 我对 selenium 及其 xpath 支持不是很熟悉,而且你没有显示任何 python,所以我看不到你如何调用它,但上面是有效的 1.0 xpath。
我们的搜索引擎已被替换,新引擎返回经过调整的 html 响应。我正在调整测试自动化,但我很难通过文本内容找到正确的 H3 元素,并且...
有没有办法访问 Tableau 可视化工具栏按钮,例如“刷新此视图中的数据”? 我尝试通过 id 和 Xpath 来定位工具栏元素,但它抛出一个元素未找到异常...
在一个页面中,有一个内联元素,包含多个对象。 我可以使用 //script[contains(text(),'results')] 这样的 XPath 访问完整的脚本。 它包含多个对象,其中...
我正在使用 XMLStarlet 为我的应用程序快速部署 cmd (Windows) 脚本,并且我正在更改配置 xml 文件。 整个节点/属性的操作非常完美,但我需要
Selenium - XPath - 通过innerHTML 搜索元素
我正在学习 Selenium,并且对 XPath 有很好的掌握。 我遇到的一个问题是,在网页上,我想要选择一个具有动态生成的 id 和类的元素。我有三...
我有一个 PySpark DataFrame,其中有一列包含 XML 字符串,并且我使用带有绝对路径的 XPath 查询从这些 XML 字符串中提取数据。但是,我注意到 XPath 查询
在简单的网络抓取查询上使用 Google Sheets 的 ImportXML XPath 问题
我一直在尝试使用谷歌表格导入xml以从URL https://www.pro-football-reference.com/boxscores/201912290car.htm中抓取高级接收表数据,但没有成功。 我已经...
I 一个 Xpath 表达式 //img//a 选择以下 Xpath。 /img/span/a /img/span/span/span/a /img/span/span/a/span 但我只对那些以 /a 结尾的感兴趣。我怎样才能改变我的
如何在 NPP XML 工具插件中自定义“当前 XML 路径”的格式
想要:(使用[@android:id='@com.google.android.qq:id/action_bar_root']) /android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout[@android:i...
我有一个 XSLT 模板,它对所有级别的主题进行计数,用于在我拥有的 DITA 项目中用编号来标记这些主题。 我有一个 XSLT 模板,它对所有级别的主题进行计数,用于在我拥有的 DITA 项目中用编号来标记这些主题。 <xsl:template match="*[contains(@class, ' bookmap/chapter ')] | *[contains(@class, ' map/topicref ')] [not(ancestor-or-self::*[contains(@class,' bookmap/frontmatter ')])]" mode="topicTitleNumber"> <xsl:number format="1 " count="*[contains(@class, ' map/topicref ')] [not(ancestor-or-self::*[contains(@class,' bookmap/frontmatter ')])] | *[contains(@class, ' bookmap/chapter ')]" level="multiple"/> </xsl:template> 我正在尝试为计算的内容添加额外的排除项,因为当 topicref 类具有 title 元素且 outputclass 为 noNum 时。 <xsl:template match="*[contains(@class, ' bookmap/chapter ')] | *[contains(@class, ' map/topicref ')] [not(ancestor-or-self::*[contains(@class,' bookmap/frontmatter ')])]" mode="topicTitleNumber"> <xsl:number format="1 " count="*[contains(@class, ' map/topicref ')] [not(ancestor-or-self::*[contains(@class,' bookmap/frontmatter ')] | *[contains(title/@outputclass, 'noNum')])] | *[contains(@class, ' bookmap/chapter ')]" level="multiple"/> </xsl:template> 如上所示,我在第一个 | *[contains(title/@outputclass, 'noNum')] 语句之后添加了 not,认为这将充当附加条件,在调用模板时,count 调用将跳过(即 ...不是祖先 -或-self 与[criteria] 或标题outputclass 属性为“noNum”的主题...)。然而,我添加的标准似乎被视为模板“确实”匹配并计数的内容。 假设我在最后一点上是正确的,我相信我需要将该条件放在它自己的“not”语句中,但我不确定如何使用 XPath 中已存在的条件来做到这一点。 在 XPath 中 | 是集合并运算符,而不是逻辑 OR。 联合运算符,| XPath 1.0 |运算符计算其操作数的并集,操作数必须是节点集。 XPath 2.0+ union 和 | 运算符是等效的。它们采用两个节点序列作为操作数,并返回一个包含任一操作数中出现的所有节点的序列。 逻辑或,or 使用 or 代替 逻辑 OR . 复杂的 XPath 仍然无法工作? 将其分解为更小的部分: //*[contains(@class, ' bookmap/chapter ')]是否选择了您期望的内容? 对逻辑表达式的每个最基本部分重复单独。 将这些单独验证的术语或谓词一次一个地组合起来,并观察沿途的每一步,都不会出现意外。 在合并附加条款之前修复预期结果与实际结果之间的任何差异。