xpath 相关问题

XPath的主要目的是解决XML文档的各个部分。它还提供操纵弦乐,数字和布尔值的基本设施。 XPath使用紧凑的非XML语法。 XPath在XML文档的抽象逻辑结构上运行,而不是表面语法。

如何在 PowerShell 中获取转义的 xml 属性值而不进行转义

给出以下 xml: 一些文字 我需要获取 bar 属性的值而不对其进行转义。到目前为止我在 PowerS 中尝试过的每一种方法...

回答 4 投票 0

根据多个兄弟条件选择兄弟节点值,不使用xpath字符串

使用 xpath 查找 xml 节点有多种答案,如下所示。在使用 lxml 的 python 中,是否有更 Pythonic 的方式来构建这个条件列表?我知道我可以使用...构建 xpath 字符串

回答 1 投票 0

优化查询 - PostgreSQL - XPATH

我的查询(PostgreSQL)可以正常工作。 将 xml_test 作为 ( 选择 ' 我的查询(PostgreSQL)可以正常工作。 with xml_test as ( select '<!--Build-Version: 1.564-REVb37dd024a8-20220530T1418--><tns:Message xsi:schemaLocation="https://appprod.be/Trivia/documents/Docs/XSDs/v1/T013 T013_v1.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="https://appprod.be/Trivia/documents/Docs/XSDs/v1/T013"> <Header> <Agent>90015299</Agent> <SocialFund>299</SocialFund> <MessageId>T013</MessageId> <Timestamp RequestDate="2022-06-16T23:20:00" ProcessDate="2022-06-16T23:25:20" ResponseDate="2022-06-16T23:25:20"/> <Reference NRK="6e6806740a6ea06d7ca6ae7b31edeb8e" Requestor="90010299"/> <Result>OK</Result> <ReturnCode>ResponseOnly</ReturnCode> </Header> <Body> <Request> <TransmissionMethod>BULK</TransmissionMethod> <SocialFundCode>299</SocialFundCode> <FileNumber>9913894</FileNumber> <FiscalYear>2020</FiscalYear> <FiscalHouseHolds> <FiscalHouseHold> <Beneficiary>66090999038</Beneficiary> <FiscalPartners> <FiscalPartner>65120999956</FiscalPartner> </FiscalPartners> </FiscalHouseHold> <FiscalHouseHold> <Beneficiary>66090999038</Beneficiary> <FiscalPartners> <FiscalPartner>65120999956</FiscalPartner> <FiscalPartner>94013099924</FiscalPartner> </FiscalPartners> </FiscalHouseHold> </FiscalHouseHolds> </Request> </Body> </tns:Message>' as x ) select file_number , (xpath('//Beneficiary/text()', fiscal_household::xml))[1]::text benef , array_to_string( (xpath('//FiscalPartner/text()', fiscal_household::xml)), ' - ') fiscal_partners from ( select (xpath('/tnsMessage/Body/Request/FileNumber/text()', replace(x, ':','')::xml))[1]::text file_number , unnest(xpath('/tnsMessage/Body/Request/FiscalHouseHolds/FiscalHouseHold', replace(x, ':','')::xml))::text fiscal_household from xml_test ) temp ; 它给了我正确的结果,就是这些。 文件编号 好处 财政合作伙伴 9913894 66090999038 65120999956 9913894 66090999038 65120999956 - 94013099924 您可以看到我必须经历一个中间步骤并执行两次 SELECT。是否可以取消这个中间步骤?和/或优化这个查询? 感谢所有的灵感。 将财政家庭提取为笛卡尔积(即无约束连接)子查询。这实际上充当行级函数,将表达式附加到源输出。 请注意,我添加了一个新的第三个受益人以及新的fiscal_partners,以证明参照完整性得到了维护。 with xml_test as ( select '<!--Build-Version: 1.564-REVb37dd024a8-20220530T1418--><tns:Message xsi:schemaLocation="https://appprod.be/Trivia/documents/Docs/XSDs/v1/T013 T013_v1.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="https://appprod.be/Trivia/documents/Docs/XSDs/v1/T013"> <Header> <Agent>90015299</Agent> <SocialFund>299</SocialFund> <MessageId>T013</MessageId> <Timestamp RequestDate="2022-06-16T23:20:00" ProcessDate="2022-06-16T23:25:20" ResponseDate="2022-06-16T23:25:20"/> <Reference NRK="6e6806740a6ea06d7ca6ae7b31edeb8e" Requestor="90010299"/> <Result>OK</Result> <ReturnCode>ResponseOnly</ReturnCode> </Header> <Body> <Request> <TransmissionMethod>BULK</TransmissionMethod> <SocialFundCode>299</SocialFundCode> <FileNumber>9913894</FileNumber> <FiscalYear>2020</FiscalYear> <FiscalHouseHolds> <FiscalHouseHold> <Beneficiary>66090999038</Beneficiary> <FiscalPartners> <FiscalPartner>65120999956</FiscalPartner> </FiscalPartners> </FiscalHouseHold> <FiscalHouseHold> <Beneficiary>66090999038</Beneficiary> <FiscalPartners> <FiscalPartner>65120999956</FiscalPartner> <FiscalPartner>94013099924</FiscalPartner> </FiscalPartners> </FiscalHouseHold> <FiscalHouseHold> <Beneficiary>66090999040</Beneficiary> <FiscalPartners> <FiscalPartner>65120990056</FiscalPartner> <FiscalPartner>94013000924</FiscalPartner> </FiscalPartners> </FiscalHouseHold> </FiscalHouseHolds> </Request> </Body> </tns:Message>' as x ) SELECT (xpath('/tnsMessage/Body/Request/FileNumber/text()', replace(x, ':','')::xml))[1]::text file_number , (xpath('//Beneficiary/text()', fiscal_household::xml))[1]::text AS benef , array_to_string( (xpath('//FiscalPartner/text()', fiscal_household::xml)), ' - ') fiscal_partners FROM xml_test, (SELECT unnest(xpath('/tnsMessage/Body/Request/FiscalHouseHolds/FiscalHouseHold', replace(x, ':','')::xml))::text AS fiscal_household FROM xml_test) A ; 产量 文件编号 好处 财政合作伙伴 9913894 66090999038 65120999956 9913894 66090999038 65120999956 - 94013099924 9913894 66090999040 65120990056 - 94013000924 需要注意的是,仅仅因为 2 阶段查询与 3 阶段查询在语法上可能更清晰,查询优化器最终可能仍会构建相同的计划。

回答 1 投票 0

选择用 <a> 和 <i> 标签包裹的复选框?

我正在尝试使用 is_selected() 方法检查是否选中了该复选框。我明白,由于我尝试验证的元素不是合法的复选框,因此这样验证它是不对的...

回答 1 投票 0

选择用 <a> 和 <i> 标签包裹的复选框?

我正在尝试使用 is_selected() 方法检查是否选中了该复选框。我明白,由于我尝试验证的元素不是合法的复选框,因此这样验证它是不对的...

回答 1 投票 0

当特定文本部分可变时查找元素的特定文本(selenium Java)

对于以下元素,我需要找到重新排队、应用程序退出和问候启动的计数。 此外,我需要验证每个事件的计数。 对于以下元素,我需要找到重新排队、应用程序退出和问候语启动的计数。 此外,我需要验证每个事件的计数。 <div _ngcontent-ome-c213="" class="counts"> 0 Requeues<br _ngcontent-ome-c213=""> 0 App Exits<br _ngcontent-ome-c213=""> 2 Greets Started </div> 尝试过: public void verifySessionMetricsWasGenerated(String metrics, int count) { assertThat(findElements(By.xpath("//div[contains(@class, 'counts') and contains(text(), '" + metrics + "')]"))) .as("Did not find expected number of metrics '" + metrics + "' " + SpecContext.examSession()) .hasSize(count); 得到: Expected size: 1 but was: 0 in: [] Stack Trace: java.lang.AssertionError: [Did not find expected number of metrics 'Greets Started' 我认为解决这个问题的更简单方法是调用一个返回所有 3 个指标的方法,然后在测试中断言每个指标。 要返回所有指标,我们需要一个可以保存 3 个值的类。 指标.java public class Metrics { public String Requeues; public String AppExits; public String GreetsStarted; public Metrics(String requeues, String appExits, String greetsStarted) { Requeues = requeues; AppExits = appExits; GreetsStarted = greetsStarted; } } 然后我们需要一个方法来返回包含 3 个值的 Metrics 实例, public static Metrics getMetrics() { String counts = driver.findElement(By.cssSelector("div.counts")).getText(); String[] countStrings = counts.split("\\n"); return new Metrics(countStrings[0].split(" ")[0], countStrings[1].split(" ")[0], countStrings[2].split(" ")[0]); } 然后我们进行测试本身, String expectedRequeues = "0"; String expectedAppExits = "0"; String expectedGreetsStarted = "2"; driver = new ChromeDriver(); driver.manage().window().maximize(); driver.get(url); Metrics metrics = getMetrics(); Assert.assertEquals(metrics.Requeues, expectedRequeues, "Verify requeues"); Assert.assertEquals(metrics.AppExits, expectedAppExits, "Verify app exits"); Assert.assertEquals(metrics.GreetsStarted, expectedGreetsStarted, "Verify greets started");

回答 1 投票 0

与 / 和 // 一起使用时先前轴的移动行为的问题

A44 A ... <div id="moe-osm-pusher" style="display: block !important; height: 0px;"> <div><p>A44</p></div> </div> <div id="x"> <p>A</p> <div> <div> <p>A11</p> </div> <div> <p>A12</p> <div> <p>A13</p> </div> <div> <p>A23</p> <div><p>A00</p></div> </div> </div> <div> <p>A22</p> </div> </div> </div> //div[p[contains(text(),'A23')]]// 前面::div //div[p[包含(text(),'A23')]]/前面::div 我的问题是第一个xpath是否会找到这个<div><p>A00</p></div>或不? 我在 http://xpather.com/ 中看到它正在定位 div 但为什么。 Xpath 不是意味着倒退吗? xpath 的公共输出都是: <div> <p>A13</p></div> <div> <p>A11</p> </div> <div><p>A44</p></div> <div id="moe-osm-pusher" style="display: block !important; height: 0px;"></div> 没关系。 这个问题让我很困惑。答案就在你看不到的节点中:纯空白文本节点。 表情 //div[p[contains(text(),'A23')]] 选择作为 div、 的父级的 <p>A23</p> 元素 现在//preceding::div的意思是/descendant-or-self::node()/preceding::div。 descendant-or-self 选择多个节点,其中之一是紧跟在 <div><p>A00</p></div> 元素后面的空白文本节点。当您从此空白文本节点沿着前一个轴移动时,结果将包含 <div><p>A00</p></div> 元素。

回答 1 投票 0

使用 XMLStarlet 删除属性

我有一个 XML 文档,我想使用 XMLStarlet 从所有元素(或给定类型的所有元素)中删除特定类型的所有属性及其值,而不干扰其...

回答 2 投票 0

如何使用 xmlstarlet 在另一个元素下插入一个新元素?

$ vim test.xml $ xmlstarlet ed -i "/config" -t elem -n "sub" -v "" test.xml ...

回答 6 投票 0

打印下拉元素值的所有隐藏定位器并一一选择react bootstrap

我们有 React Bootstrap 应用程序,它具有下拉字段,尝试获取 Xpath 并选择下拉值,但是当选定的下拉值 html 不显示定位器或它具有隐藏元素定位器...

回答 1 投票 0

使用 XPATH text() 函数时遇到困难

我的目标是从页面获取价格文本。 当我使用 XPATH 时 //*[@id="module_product_price_1"]/div/div/span ,它只找到一项。但是,当我包含 text() 函数时 ...

回答 1 投票 0

如何使用 XPath 查询仅检索字符串中的最后 4 个字符

我正在使用 xpath 从 XML 格式的文件中检索各种数据点。 有一种情况,我只想提取一个值的最后 4 位数字,但我不知道如何提取。 我已经...

回答 4 投票 0

如何为下面的h4节点编写通配符xpath

我熟悉 contains() 和starts-with()。我正在寻找一些可以包含“Cucumber”的 XPath reg 表达式,并且后面的任何内容都应与通配符匹配。这可能吗? ...

回答 1 投票 0

Puppeteer - 通过 xPath 获取元素

嗨,我一直在到处寻找关于如何通过 xPath 查找元素的非常简单的解释。 我想要的只是一种查找元素的简单方法,而是我设法找到的所有帮助

回答 2 投票 0

Selenium 从《太阳足球》网页抓取相同的标题、副标题和链接

我在使用 Selenium 从 The Sun Football 网站抓取新闻标题、字幕和链接时遇到了挑战。尽管实现了看似正确的 XPath 来定位所需的元素...

回答 1 投票 0

为什么 splunk xpath 无法解析我的 rex 提取的 XML?

我正在尝试使用 xpath 解析消息字段中的 XML 有效负载,但是我无法让 xpath 命令返回任何结果。 消息:{“类型”:“RESP_OUT”,“方法”:“

回答 1 投票 0

元素的Xpath仅基于文本内容?

我正在尝试获取此 HMTL 代码的第二个按钮“购买”的 xpath,但不使用类、id 或其他属性或完整的 Xpath,仅使用与其相关的文本内容,如下所示

回答 1 投票 0

如何使用 Xpath 获取“charset”元元素的值?

使用 Selenium webdriver,我尝试从页面解析字符集元元素。 这就是我到目前为止所拥有的 从 selenium.webdriver.common.by 导入 xpa...

回答 1 投票 0

分页的 XPath 语法

需要帮助获取此处粘贴的图像的 XPath: 在此输入图像描述 我试过这个: private readonly Label _pagenumber = new Label(By.XPath("//div[@class='btn-pagination bt...

回答 1 投票 0

为什么 Freemarker Template 不解析带命名空间的 xml

我之前的问题在这里得到了解答 如何在body函数中分离freemarker中的XML标签 但是我的 xml 带有名称空间,但是当我尝试在模板中添加名称空间时,它无法解析...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.