XPath的主要目的是解决XML文档的各个部分。它还提供操纵弦乐,数字和布尔值的基本设施。 XPath使用紧凑的非XML语法。 XPath在XML文档的抽象逻辑结构上运行,而不是表面语法。
通过使用纯 XPath 3.1(或 XQuery)查询存储在文本文件中的 XPaths 表达式来替换 JSON 模板中的“{{varname}}”标题
我有一个 HTML 文档: 标题 《逃亡》 ... 我有一个 HTML 文档: <html> <head> <title>Title</title> </head> <body> <h1><i>"Escape"</i></h1> <p> <b>`\n`</b> <p>& < ></p> <aside>1.5</aside> </body> </html> A file.txt 存储变量名称及其对应的 XPath: xpath:ref_1://body/h1/string() xpath:ref_2.1://body/p[1]/string() xpath:ref_2.2.1://body/p[2]/string() xpath:ref_3://body/aside[1]/number() 还有一个 JSON 模板 file.json: { "key_1": "{{ref_1}}", "key_2": { "key_2.1": "{{ref_2.1}}", "key_2.2": [ 0, "{{ref_2.2.1}}" ] } "key_3": "{{ref_3}}" } 我想通过评估存储在 "{{varname}}" 中的相应 XPath 来替换 JSON 中的 file.txt。预期输出为: { "key_1": "\"Escape\"", "key_2": { "key_2.1": "\n `\\n`\n ", "key_2.2": [ 0, "& < >" ] } "key_3": 1.5 } 通过使用 XPath 处理器定义的实现x:eval,我可以获得一个存储变量名称及其处理值的映射: let $vars_file := "file.txt", $json_file := "file.json" return let $doc := . , $map := map:merge( unparsed-text-lines($vars_file) ! ( let $record := tokenize(., ":"), $options := map{"language": $record[1]}, $key := $record[2], $value := $doc/x:eval($record[3], $options) return map{$key: $value} ) ) return $map 哪个输出: { "ref_1": "\"Escape\"", "ref_2.1": "\n `\\n`\n ", "ref_2.2.1": "& < >", "ref_3": 1.5 } 到目前为止一切顺利,但如何使用 $map 中的值更新 JSON? 解析深度嵌套的 JSON 并修改生成的 JTree 中的值似乎有点硬核... 一个不太稳健的解决方案可能是使用 fn:analyze-string 并替换结果中的匹配项: (: placeholder for the code in the question :) string-join( ($json_file => unparsed-text() => analyze-string("""\{\{[^}]*\}\}"""))/* ! ( if (name() = "match") then serialize($map(. => replace("^...|...$","")), map{"method": "json"}) else . ) ) 输出: { "key_1": "\"Escape\"", "key_2": { "key_2.1": "\n `\\n`\n ", "key_2.2": [ 0, "& < >" ] } "key_3": 1.5 }
这是一个示例 XML: 这是一个示例 XML: <Body> <Subsection lims:inforce-start-date="2018-12-15" lims:fid="170842" lims:id="170842"> <MarginalNote lims:inforce-start-date="2018-12-15" lims:fid="170843" lims:id="170843">Determination of rate — 2nd case</MarginalNote> <Label>(11.08)</Label> <Text>If A is greater than 4.95%, D is less than or equal to 4.95% and the percentage determined by the formula</Text> <Text>1/2(A - D) [...] is less than or equal to 0.1%, then the contribution rate for employees and employers for each year after the October 1 date referred to in subsection (11.05) is the rate determined by the formula</Text> <Text>4.95% + 1/2(A - 4.95%) + C </Text> </Subsection> </Body> 我想编写一个 XPath 查询,返回具有同级文本元素的文本元素。 我尝试了以下表达式的多种变体,但我不太能完全正确: $xPathFR->query("Body//Text[.= following-sibling]"); 任何帮助或指示将不胜感激! 您可以同时使用 following-sibling:: 和 preceding-sibling:: 轴: /Body//Text[following-sibling::Text or preceding-sibling::Text] 但可能更容易测试 Text 元素的父元素是否有多个 Text,然后选择那些 Text 兄弟姐妹: /Body/*[Text[2]]/Text
如何使用 Playwright 通过 Xpath/CSS 选择器定位元素
如何使用 Playwright TS/JS 通过 Xpath/CSS 选择器定位元素? Playwright 中有很多定位器(与 Selenium 相比) 例如 getByRole 和 getByText。 有没有像
我正在使用 Bash 脚本 # 定义 URL 和浏览器变量 sGDomain=“理想主义者” sGCitta="fucecchio-佛罗伦萨" sGTypo="vendita-case" iGPagina=1 # 开始...
用 XQuery/XPath 3.1 替换任意嵌套映射/数组中的字符串
我有一个从JSON文件解析的地图,例如: 让 $template := 地图{ “名称”:“{{名称}}”, “聚合评级”:地图{ " ratingValue": "{{评级...
如何区分 XPath 3.1 中的 Map、Array、String 等?
有没有一个函数可以测试(或返回).的类型?例如: ( root(), (), "a", 1, 地图{}, 数组{} ) !未知:类型(.) 节点 顺序 细绳 数字 地图 数组
如何使用 XPath 变量在 WordPress 中动态填充架构?
我的 WordPress 项目中有帖子类型“公司”的架构,但我也有 XPath 变量,但我不知道如何处理它们。任何可能在 XPath 工作过的人都可以帮助我...
如何通过属性名称选择所有元素,但使用 xpath 排除相同的子元素。 HTML 代码: 产品名称 如何通过属性名称选择所有元素,但使用 xpath 排除相同的子元素。 HTML 代码: <div c-store="test"> <div c-text>Product Name</div> <div c-store="test"> <div c-text>Product Name</div> <div c-store="test"> <div c-text>Product Name</div> </div> </div> </div> 结果应该是: <div c-store="test"> <div c-text>Product Name</div> </div> 每个 [c-store] 元素不应包含其他类似的 [c-store] 元素 这个 XPath, //div[@c-store="test"][not(div[@c-store="test"])] 将选择 div 值为 @c-store 的所有 "test" 元素,前提是 div 元素没有具有相同属性的子 div 元素。
我创建了一个脚本来检查复选框。单击复选框后,会打开一个新选项卡,但该复选框保持未选中状态
我想自动化注册过程,但无法使用 Playwright 选中该框。每次我单击该复选框时,我都会被重定向到一个新链接。在 DOM 中,当选中复选框时,
您可以根据 XML 文档验证 XPath 表达式来验证它,但是有没有一种简单的方法可以根据该文档的架构验证相同的 XPath 表达式? 假设我有一个 XSD 架构,例如...
在`return`之前定义一个变量并在另一个`:=`中使用它是否安全?
我记得在某处读过,XPath 可能会处理 //; 中表达式的组件。所以我的问题是:我可以定义一个变量并在...的其他变量定义中使用它吗?
直接将链接的 XPATH 粘贴到 selenium 中会指向另一个链接
我正在自动完成 Linkden 配置文件的登录和配置文件完成。我已经能够进入主页并通过登录页面。我正在尝试通过模拟 CLI 进入个人资料页面...
我已经阅读了最新的puppeteer v22.x有关XPath的文档,但仍然不知道如何在puppeteer 22.x中使用XPath。 目标是我想单击包含“下一个”文本的文本,这里的 HTML...
Selenium Java:单击 Shadow-root 内带有 CSSselector 的按钮
我从这里弹出cookie: 网站 我用 Shadow-root 选择了它,如下所示: 如何 现在我想单击带有 xpath 表达式的按钮,如下所示: WebElement ShadowHost = driver.findElement(...
Android 混合应用程序 - Chrome 检查 Xpath 无法使用 Java 找到
我对 Android 应用程序测试非常陌生。 我开始测试混合应用程序。在登录页面之后,我想捕获一些特定元素的 xpath 和值。 我使用 Chrome Inspector 来...
Google 表格 IMPORTXML 和 XPath href 和标题未返回
我需要使用 Google Sheets ImportXML 和 Xpath 提取一些 URL 及其各自的标题。 我找到了这些以前的答案并对其进行了测试,但它们似乎不适用于我的情况: 额外...
Selenium webdriver-当所有产品都具有相同类别时如何选择产品(amazon.in)
我正在尝试自动化 amazone.in。我想点击特定产品。但在 Amazon.in 中,所有产品都有相同的类别。 产品1 我正在尝试使 amazone.in 自动化。我想点击特定产品。但在 Amazon.in 中,所有产品都有相同的类别。 产品1 <h2 class="a-size-medium s-inline s-access-title a-text-normal">Puma Men's Storm Ind Mesh Running Shoes</h2> 产品2 <h2 class="a-size-medium s-inline s-access-title a-text-normal">Nike Men's Eliminate Ii Mesh Running Shoes</h2> 我该如何继续? 下面是我的代码 driver.manage().window().maximize(); driver.get("http://amazon.in"); driver.findElement(By.id("twotabsearchtextbox")).sendKeys("shoes"); driver.findElement(By.id("twotabsearchtextbox")).submit(); driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); driver.findElement(By.xpath("//h2[@class='a-size-medium s-inline s-access-title a-text-normal']")).click(); 是否可以使用“标题”标签单击元素? 您可以通过将产品名称添加到 xpath 中来缩小范围来解决此问题。 driver.findElement(By.xpath("//h2[@class='a-size-medium s-inline s-access-title a-text-normal' and contains(text(), \"Nike Men's Eliminate Ii Mesh Running Shoes\")]")).click(); 上面的代码将点击第一个产品。您只需替换产品名称即可点击相关产品。 您可以通过以下方法来实现, Xpath 轴 text()='' 索引 Xpath 如上所述。 大多数问题都有不止一种解决方案。祝一切顺利。
xml 文档在注释节点中包含注释,如下所示: 09/28/2021 22:21:31user1 [1] 文件已上传 09/28/2021 22:22:47user2 [2] ...
我通过点击 YouTube 视频趋势部分来练习 XPath。在趋势部分,我想单击第二个视频,无论存在哪个视频。我已经写了...