xpath 相关问题

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

使用Python + Selenium选择shelly

所以我是在 Python 中使用 Selenium 的新手。我想访问特定网站上的 xpath。 要访问该网站,必须首先使用帐户登录,所以我的问题并不能真正重现...

回答 1 投票 0

Selenium,如何定位并单击特定按钮

我正在使用 selenium 尝试抓取此网站中的产品列表: https://www.zonacriativa.com.br/harry-potter 但是,我无法获取完整的产品列表。该页面...

回答 2 投票 0

使用 python 和 selenium 在 Palo Alto 网站上发送 2FA 电子邮件

我正在尝试编写一个脚本,该脚本将从帕洛阿尔托网络网站下载文件。 我正在编写的脚本成功输入了用户名和密码,但是 2FA 部分com...

回答 1 投票 0

在 Power Automate 中,是否可以使用 XPath 表达式从 DOCX“document.xml”文件获取表格单元格的完整内容?

使用 https://www.tachytelic.net/2021/05/power-automate-extract-text-from-word-docx-file/ 上的优秀指南,我可以设置 Power Automate 流程来提取来自 DOCX 文件的文本内容...

回答 2 投票 0

显示文本值的Xpath

我正在尝试编写一个 XPATH 来显示项目编号,但我只能弄清楚如何显示文本“项目编号(DPCI)”,而不是实际的项目编号,即 085-03-7859示例 b...

回答 1 投票 0

Power Automate - 云流 - 使用 xpath 作为父节点属性

RESTful API 调用会返回下面注明的 XML。 我需要循环执行每个 ShowSurveyAnswerKey 的各个步骤。所以在这种情况下,有 8 个。知道如何使用“适用于每个”...

回答 1 投票 0

如何使用 xPath 根据另一个文本在表格中查找文本

当感兴趣的行单元格具有以下 XPath 时,我有一个包含列和行的表格: //表[2]/tbody/tr[2]/td[2]/b/a 该单元格包含文本 ABC 我只能使用以下 XPath: //ta...

回答 1 投票 0

我需要使用Xpath提取alt元素

在此输入图像描述 我正在使用这个xpath //*[@class="相对mr3"]//div[2]//img/alt/text() 提取 “Tramontina Primaware 18 件套不粘炊具套装,钢灰色&qu...

回答 2 投票 0

Ansible 无法通过 XPath 读取属性(不是元素)

我尝试从 XML 文件读取 XML 属性的值,但收到此错误: Xpath /sca:composite/@revision 未引用节点! 我的 XML 文件如下所示: 我试图从 XML 文件中读取 XML 属性的值,但收到此错误: Xpath /sca:composite/@revision 未引用节点! 我的 XML 文件如下所示: <composite revision="1.0.1" xmlns="http://xmlns.oracle.com/sca/1.0"> ... </composite> 我的 Ansible 命令是: - name: 'Get revision' xml: path: 'composite.xml' xpath: '/sca:composite/@revision' content: attribute namespaces: sca: 'http://xmlns.oracle.com/sca/1.0' register: my_revision 我尝试过不少于20种XPath的排列方式,比如: /composite/@revision /composite/revision /sca:composite/@revision /sca:composite/revision /sca:composite/@sca:revision 并使用 content 作为 text 和 attribute。 我能得到的最接近的结果是用 XPath 匹配根节点:/sca:composite。 但我就是找不到该属性。 有什么建议吗? 我找到了一个做作的两步解决方法。首先,XPath 仅匹配元素。其次,导航 JSON 结果/匹配属性。 -name: 'Match XPath' xml: path: 'composite.xml' xpath: '/sca:composite/@revision' content: attribute namespaces: sca: 'http://xmlns.oracle.com/sca/1.0' register: xpath_match -name: 'Get revision' set_fact: my_revision: '{{xpath_match.matches[0]["{http://xmlns.oracle.com/sca/1.0}composite"].revision}}' 注意:XPath 匹配返回一个 JSON 对象,例如: { "matches": [ { "{http://xmlns.oracle.com/sca/1.0}composite": { "revision": "1.0.1" } } ] } 不要对 "composite" 的 JSON 字段名称感到困惑。它的语法是"{xmlnamespace}composite"

回答 1 投票 0

.NET:从 XPath 中定位原始 XML 文档中的节点

我正在尝试以编程方式定位由 XPath 标识的 XML 文本中的元素。也就是说,不仅要在解析的 XML 结构中找到引用的元素,还要确定开始和结束

回答 1 投票 0

xpath 表达式中返回多个

(我对什么是XQuery,什么是XPath很模糊) 我有一个我想要去的场景(在 XSLT 3.0 语句中的“select”属性中) 为 $x 换成 $xs 对于 $y 中的 $y 返回怪人:foo($x,$y) 我...

回答 1 投票 0

Google Sheets ImportXML Xpath?

我正在尝试抓取一个网站以获得排名检查表的值,不幸的是,我在网络抓取或任何此类内容方面没有太多经验,并且想知道如何找到......

回答 1 投票 0

如何使用 XML 查询功能从 XML 节点查询值

我有以下 XML 数据: 声明@x XML 设置@x=' 订购 我有以下 XML 数据: DECLARE @x XML SET @x='<Orders> <HeadingSection> <DocumentNameCode>Order</DocumentNameCode> <DetailSection> <LineItem LineItemNumber="10"> <ItemId>123456789</ItemId> <ItemTypeId>EN</ItemTypeId> <AdditionalProductId Qualifier="ProductId"> <Item> <ItemId>ABC</ItemId> <TypeId>SA</TypeId> </Item> </AdditionalProductId> <AdditionalProductId Qualifier="ProductId"> <Item> <ItemId>XYZ</ItemId> <TypeId>IN</TypeId> </Item> </AdditionalProductId> </LineItem> </DetailSection> <SummarySection/> </HeadingSection> </Orders>' 我已经使用了以下T-Sql脚本(必须有光标) DECLARE @xmlQuittungPOS XML DECLARE quittungCurPOS CURSOR FOR SELECT QuittungXMLPOS = T.X.query('.') FROM @x.nodes('/Orders/HeadingSection/DetailSection/LineItem') AS T(X) OPEN quittungCurPOS FETCH NEXT FROM quittungCurPOS INTO @xmlQuittungPOS WHILE @@FETCH_STATUS = 0 BEGIN INSERT INTO dbo.tempPOS ( GTIN ,edi_PIA_SA ,edi_PIA_IN ) SELECT GTIN = T.X.query('/LineItem[ItemTypeId = "BP"]').value('(/LineItem/ItemId)[1]','VARCHAR(100)') -- funktioniert / works ,edi_PIA_SA = T.X.query('/LineItem/AdditionalProductId/Item[TypeId = "SA"]').value('(/LineItem/AdditionalProductId/Item/ItemId)[1]','VARCHAR(255)') -- funktioniert nicht / doesn't work ,edi_PIA_IN = T.X.query('/LineItem/AdditionalProductId/Item[TypeId = "IN"]').value('(/LineItem/AdditionalProductId/Item/ItemId)[1]','VARCHAR(255)') -- funktioniert nicht / doesn't work FROM @xmlQuittungPOS.nodes('/LineItem') AS T(X) FETCH NEXT FROM quittungCurPOS INTO @xmlQuittungPOS END CLOSE quittungCurPOS DEALLOCATE quittungCurPOS 1.) GTIN -> 查询有效 2.) PIA_SA 和 PIA_IN -> 查询不起作用 问题: 我认为这是因为 '/LineItem/AdditionalProductId/Item[TypeId = "SA"]' 位于附加节点中。 问题: 如何获取中TypeId“SA”和“IN”的值 <AdditionalProductId Qualifier="ProductId"> <Item> <ItemId>**ABC**</ItemId> <TypeId>SA</TypeId> </Item> </AdditionalProductId> <AdditionalProductId Qualifier="ProductId"> <Item> <ItemId>**XYZ**</ItemId> <TypeId>IN</TypeId> </Item> </AdditionalProductId> with .value('(/LineItem/AdditionalProductId/Item/ItemId)[1]','VARCHAR(255)') !处于 1 级! -- 我知道。 级别 1 上的 SA -> .value('(/LineItem/AdditionalProductId/Item/ItemId)[1]','VARCHAR(255)') 级别 2 上的 SA -> .value('(/LineItem/AdditionalProductId/Item/ItemId)[2]','VARCHAR(255)') 但我现在需要查询类型 谢谢 不清楚你在这里追求什么,所以我回答两者。如果您想要每个 Item 节点 1 行,那么您只需对 nodes 节点使用 Item 并获取 value 文本的 ItemId: DECLARE @xml xml = '<AdditionalProductId Qualifier="ProductId"> <Item> <ItemId>**ABC**</ItemId> <TypeId>SA</TypeId> </Item> </AdditionalProductId> <AdditionalProductId Qualifier="ProductId"> <Item> <ItemId>**XYZ**</ItemId> <TypeId>IN</TypeId> </Item> </AdditionalProductId> '; SELECT AP.I.value('(ItemId/text())[1]','varchar(15)') AS ItemId, AP.I.value('(TypeId/text())[1]','varchar(15)') AS TypeId FROM (VALUES(@XML))V(X) --To give impression it's against a table CROSS APPLY V.X.nodes ('AdditionalProductId/Item')AP(I); 但是,如果您希望每个不同的 TypeID 值各有 1 列,您可以在 XML 中进行过滤: SELECT X.AP.value('(AdditionalProductId/Item[TypeId[(text()[1])="SA"]]/ItemId/text())[1]','varchar(15)') AS ItemSA, X.AP.value('(AdditionalProductId/Item[TypeId[(text()[1])="IN"]]/ItemId/text())[1]','varchar(15)') AS ItemIN FROM @xml.nodes ('/')X(AP); --To give impression it's against a table 或者使用之前的查询并使用条件聚合: WITH Items AS( SELECT AP.I.value('(ItemId/text())[1]','varchar(15)') AS ItemId, AP.I.value('(TypeId/text())[1]','varchar(15)') AS TypeId FROM @xml.nodes ('AdditionalProductId/Item')AP(I)) SELECT MAX(CASE TypeID WHEN 'SA' THEN ItemId END) AS ItemSA, MAX(CASE TypeID WHEN 'IN' THEN ItemId END) AS ItemIN FROM Items;

回答 1 投票 0

在这种情况下有“distinct-values()”的解决方法吗?

首次海报和 XPath 初学者。我希望你能帮助我解决我遇到的这个 XPath 问题。这是我的文件的简化示例。 第一次海报和 XPath 初学者。我希望你能帮助我解决我遇到的这个 XPath 问题。这是我的文件的简化示例。 <town> <library> <section> <book> <title>ABC </title> </book> <book> <title>DEF </title> </book> </section> <section> <book> <title>ABC </title> </book> <book> <title>DEF </title> </book> </section> </library> <library> <section> <book> <title>ABC </title> </book> <book> <title>DEF </title> </book> </section> <section> <book> <title>ABC </title> </book> <book> <title>DEF </title> </book> <book> <title>GHI </title> </book> </section> </library> </town> 我试图通过 XPath 获得的是具有唯一“标题”的“book”元素,但在两个“library”元素中都是唯一的,而不是在根“town”节点中唯一的。 所以,根据我上面的例子,我期望得到第一个“library”的第一个“ABC”和第一个“DEF”,以及第一个“ABC”,第一个“DEF”和第一个“GHI”第二个“图书馆”。 distinct-values(//library[1]//book | //library[2]//book) 这可行,但我无法使用它,因为我需要使用 XPath 的 CMS 无法识别该功能... //library//book[not(./title = preceding::*/title)] 这不会选择第二个“库”中的第一个“ABC”和第一个“DEF”,我不明白为什么。有没有办法限制“前一个”轴的范围,使其停止在自己的“库”元素处? 如果有人理解我想要实现的目标,我将非常感谢任何帮助! 看来您使用的CMS仅支持XPath 1.0。首先游说他们改变这一点 - XPath 1.0 于 2007 年被 2.0 取代,现在应该已经成为历史。 这在单个 XPath 1.0 表达式中很难(也许不可能)完成。 (很难证明任何事情都是不可能的,但是你可以从 XPath 1.0 不是关系完备的前提开始,即它不支持整个一阶谓词演算;特别是它不支持范围变量.) 不幸的是,我不知道您还有哪些其他选择。

回答 1 投票 0

如何查找子字符串是否具有 XPath 1.0

我在尝试在 XPATH 1.0 中查找特定子字符串时遇到问题。该表达式将在代码审查工具 SonarQube 中用于设置约束。 这就是我的表达方式...

回答 1 投票 0

使用specflow和selenium查找元素

我正在尝试从此网址找到谷歌登录按钮 https://marketsmithindia.com/mstool/landing.jsp#/signIn 并得到这个异常 没有这样的元素异常 我正在使用Specflow,它是最

回答 1 投票 0

XPath 查询获取元素的第 n 个实例

有一个 HTML 文件(我不控制其内容),其中有多个输入元素,所有元素都具有相同的固定 id 属性“search_query”。文件的内容可以更改,但我知道我

回答 2 投票 0

使用 XPath 查找兄弟姐妹

如何使用xpath查找同级元素文本 一些跨度 第二个标签 //标签[归一化空间(text()...

回答 2 投票 0

XPath:从子节点获取父节点

我需要获取子节点标题50的父节点 目前我只使用 //*[标题=“50”] 我怎样才能得到它的父母? 结果应该是存储节点。 我需要获取子节点的父节点title 50 目前我只使用 //*[title="50"] 我怎样才能得到它的父级? 结果应该是 store 节点。 <?xml version="1.0" encoding="utf-8"?> <d:data xmlns:d="defiant-namespace" d:mi="23"> <store d:mi="22"> <book price="12.99" d:price="Number" d:mi="4"> <title d:constr="String" d:mi="1">Sword of Honour</title> <category d:constr="String" d:mi="2">fiction</category> <author d:constr="String" d:mi="3">Evelyn Waugh</author> </book> <book price="8.99" d:price="Number" d:mi="9"> <title d:constr="String" d:mi="5">Moby Dick</title> <category d:constr="String" d:mi="6">fiction</category> <author d:constr="String" d:mi="7">Herman Melville</author> <isbn d:constr="String" d:mi="8">0-553-21311-3</isbn> </book> <book price="8.95" d:price="Number" d:mi="13"> <title d:constr="String" d:mi="10">50</title> <category d:constr="String" d:mi="11">reference</category> <author d:constr="String" d:mi="12">Nigel Rees</author> </book> <book price="22.99" d:price="Number" d:mi="18"> <title d:constr="String" d:mi="14">The Lord of the Rings</title> <category d:constr="String" d:mi="15">fiction</category> <author d:constr="String" d:mi="16">J. R. R. Tolkien</author> <isbn d:constr="String" d:mi="17">0-395-19395-8</isbn> </book> <bicycle price="19.95" d:price="Number" d:mi="21"> <brand d:constr="String" d:mi="19">Cannondale</brand> <color d:constr="String" d:mi="20">red</color> </bicycle> </store> </d:data> 将 parent 轴与父节点的名称一起使用。 //*[title="50"]/parent::store 此 XPath 将仅选择父节点(如果它是 store)。 但您也可以使用其中之一 //*[title="50"]/parent::* //*[title="50"]/.. 这些 xpath 将选择任何父节点。因此,如果文档发生更改,您将始终选择一个节点,即使它不是您期望的节点。 编辑 在给定的示例中,如果父级是自行车,但父级的父级是商店,会发生什么? 它会上升吗? 不,它仅选择与 //*[title="50"] 匹配的节点的父节点的存储。 如果没有,是否有一种方法可以在这种情况下上升并在没有这样的父级时返回 None ? 是的,您可以使用ancestor轴 //*[title="50"]/ancestor::store 这将选择与 //*[title="50"] 匹配且为 ` 商店的节点的所有祖先。例如 <data xmlns:d="defiant-namespace" d:mi="23"> <store mi="1"> <store mi="22"> <book price="8.95" d:price="Number" d:mi="13"> <title d:constr="String" d:mi="10">50</title> <category d:constr="String" d:mi="11">reference</category> <author d:constr="String" d:mi="12">Nigel Rees</author> </book> </store> </store> </data> 作为替代方案,您可以使用 ancestor。 //*[title="50"]/ancestor::store 它比parent更强大,因为它甚至可以得到祖父母或曾曾祖父母 对旧的常见问题的新的、改进的答案... 我怎样才能得到它的父级?结果应该是 store 节点。 使用谓词而不是 parent:: 或 ancestor:: 轴 此处的大多数答案都会选择 title,然后向上遍历到目标父级或祖先 (store) 元素。一种更简单、直接的方法是首先直接选择父元素或祖先元素,从而无需遍历到 parent:: 或 ancestor:: 轴: //*[book/title = "50"] 如果中间元素的名称有所不同: //*[*/title = "50"] 或者,在名称和深度上: //*[.//title = "50"] 您也可以使用表达式末尾的两个点。看这个例子: //*[title="50"]/.. //store[book[title[text()="50"]]] 或 //store[*[title[text()="50"]]]

回答 5 投票 0

XPath 方括号运算符产生意外结果

考虑这个 XML 文档: 我正在努力寻找第一个<...

回答 1 投票 0

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