XPath的主要目的是解决XML文档的各个部分。它还提供操纵弦乐,数字和布尔值的基本设施。 XPath使用紧凑的非XML语法。 XPath在XML文档的抽象逻辑结构上运行,而不是表面语法。
在我的代码中,我想从文本中获取数据值。我的代码是这样的: 驱动程序= webdriver.Chrome(chrome_options = chrome_options,executable_path =“chromedriver.exe”) driver.get('https...
xslt 1.0 恐怕。 我可以访问 exslt。 否则我希望尽量避免使用扩展函数。 我需要找到特定类型的最近关闭的 xslt 元素,而不是...
我从 SOAP 调用获得以下 XML 响应 我从 SOAP 调用获得以下 XML 响应 <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <soap:Body> <GetContractStatusesResponse xmlns="http://www.proactis.com/xml/xml-ns/"> <GetContractStatusesResult> <Message>Successful</Message> <Code>1</Code> <InterfaceLanguage>de</InterfaceLanguage> <GetContractStatusesData xmlns="http://schemas.proactis.com/p4/contractmanagement/2013/02"> <ContractStatus code="DRFT" typeId="3581">Draft</ContractStatus> <ContractStatus code="BAPR" typeId="3582">Being Approved</ContractStatus> <ContractStatus code="RJCT" typeId="3583">Rejected</ContractStatus> <ContractStatus code="CNCL" typeId="3584">Cancelled</ContractStatus> <ContractStatus code="APPR" typeId="3585">Approved</ContractStatus> <ContractStatus code="ACPE" typeId="3586">Activation Pending</ContractStatus> <ContractStatus code="ACTV" typeId="3587">Active</ContractStatus> <ContractStatus code="SUSP" typeId="3588">Suspended</ContractStatus> <ContractStatus code="COMP" typeId="3589">Completed</ContractStatus> <ContractStatus code="NOV" typeId="3783">Novated</ContractStatus> <ContractStatus code="DEF" typeId="3853">In Defects Period</ContractStatus> </GetContractStatusesData> </GetContractStatusesResult> </GetContractStatusesResponse> </soap:Body> </soap:Envelope> 我正在尝试创建一个 xpath 引用来检索 GetContractStatusesData 数组,以便我可以循环遍历每个 ContractStatus 以使用该值以及关联的代码 我尝试过各种在线 xpath 生成器,但它们在导入逻辑应用程序时似乎无法正常工作,甚至尝试一些更简单的方法,例如获取消息值。 这些是我通过设置逻辑应用程序变量尝试过的 xpath(xml(variables('Payload')), '//ContractStatus[1]/@code') xpath(xml(variables('Payload')), '//ContractStatus[1]/text()[1]') 我通常得到的结果是[] 我对ALA一无所知,只是了解xpath表达式 //GetContractStatusesData//ContractStatus/text() 应该为您提供所有 <ContractStatus> 元素的文本值, //GetContractStatusesData//ContractStatus/@code 应该为您提供 code 值和 //GetContractStatusesData//ContractStatus/concat(.," ",@code) 应该让你们俩都得到。 您可以在这里尝试一下。 我已就此问题与 Microsoft 联系,解决方案是使用以下内容对 XML 到 JSON 使用 Compose Action,这样 JSON 就更容易使用。 json(xml(<XML content>)) 命名空间发挥作用。 尝试以下操作: //*[local-name()="GetContractStatusesData"]/*[local-name()="ContractStatus"]/text() 至于使用 concat,由于某种原因,逻辑应用程序无法使用它。 对于 xml 中有命名空间/冒号的人。逻辑应用程序 xpath 不喜欢 xpath 中的冒号 :,您需要对 xml 字符串进行全局替换以删除命名空间(本例中为 soap:),然后在转换后的 XML 上应用 xpath。 xpath(xml(replace(string('xml-text-here'), 'soap:', '')), '//your-xpath-here') 参考文档在这里。
XPath Python 错误:“列表”对象没有属性“xpath”
我对Python和网络抓取是全新的,我一生都无法弄清楚我的代码出了什么问题。是因为我只抓取一个元素而不是列表吗?我检查了我的 XPath,所以我...
这个网址 https://export.arxiv.org/api/query?id_list=2308.05734 包含以下 xml。 这个网址 https://export.arxiv.org/api/query?id_list=2308.05734包含下面的xml。 <?xml version="1.0" encoding="UTF-8"?> <feed xmlns="http://www.w3.org/2005/Atom"> <link href="http://arxiv.org/api/query?search_query%3D%26id_list%3D2308.05734%26start%3D0%26max_results%3D10" rel="self" type="application/atom+xml"/> <title type="html">ArXiv Query: search_query=&id_list=2308.05734&start=0&max_results=10</title> <id>http://arxiv.org/api/u+tTdcCSDRLdpBnNrSZIkcgVUsg</id> <updated>2024-06-24T00:00:00-04:00</updated> <opensearch:totalResults xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/">1</opensearch:totalResults> <opensearch:startIndex xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/">0</opensearch:startIndex> <opensearch:itemsPerPage xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/">10</opensearch:itemsPerPage> <entry> <id>http://arxiv.org/abs/2308.05734v3</id> <updated>2024-05-11T11:24:51Z</updated> <published>2023-08-10T17:55:13Z</published> <title>AudioLDM 2: Learning Holistic Audio Generation with Self-supervised Pretraining</title> <summary> Although audio generation shares commonalities across different types of ... </summary> <author> <name>Haohe Liu</name> </author> <author> <name>Yi Yuan</name> </author> <arxiv:comment xmlns:arxiv="http://arxiv.org/schemas/atom">Accepted by IEEE/ACM Transactions on Audio, Speech and Language Processing. Project page is https://audioldm.github.io/audioldm2</arxiv:comment> <link href="http://arxiv.org/abs/2308.05734v3" rel="alternate" type="text/html"/> <link title="pdf" href="http://arxiv.org/pdf/2308.05734v3" rel="related" type="application/pdf"/> <arxiv:primary_category xmlns:arxiv="http://arxiv.org/schemas/atom" term="cs.SD" scheme="http://arxiv.org/schemas/atom"/> <category term="cs.SD" scheme="http://arxiv.org/schemas/atom"/> <category term="cs.AI" scheme="http://arxiv.org/schemas/atom"/> <category term="cs.MM" scheme="http://arxiv.org/schemas/atom"/> <category term="eess.AS" scheme="http://arxiv.org/schemas/atom"/> <category term="eess.SP" scheme="http://arxiv.org/schemas/atom"/> </entry> </feed> 如何提取作者、标题和出版日期? 我尝试过: =IMPORTXML("http://export.arxiv.org/api/query?id_list=2308.05734", "//title") =IMPORTXML("http://export.arxiv.org/api/query?id_list=2308.05734", "//published") =JOIN(", ", IMPORTXML("http://export.arxiv.org/api/query?id_list=2308.05734", "//author/name")) 但它们都不起作用。我明白了"Imported content is empty." 但是,当我这样做时=IMPORTXML("http://export.arxiv.org/api/query?id_list=2308.05734", "/") 我得到了所有原始值。 下面的公式怎么样? 作者 =IMPORTXML("https://export.arxiv.org/api/query?id_list=2308.05734", "//*[local-name()='author']") 标题 =IMPORTXML("https://export.arxiv.org/api/query?id_list=2308.05734", "//*[local-name()='title']") 出版日期 =IMPORTXML("https://export.arxiv.org/api/query?id_list=2308.05734", "//*[local-name()='published']") 参考: 本地名称
我有一个包含以下内容的事件列表: 我有一个包含以下内容的事件列表: <div class="all-ebents"> <div class="sport-base-event"> <span class="event-block-current-time__time--VEuoj">63:07</span> <span class="event-block-score">0:0</span></div> </div> <div class="sport-base-event"> <span class="event-block-current-time__time--VEuoj">64:07</span> <span class="event-block-score">0:1</span></div> </div> <div class="sport-base-event"> <span class="event-block-current-time__time--VEuoj">63:07</span> <span class="event-block-score">0:1</span></div> </div> </div> 到目前为止,我已经能够使用以下代码获取事件时间值并进行计数 //*[contains(@class, "event-block-current-time--")]::text() # get the time block //*[contains(@class, "event-block-current-time--")]/following-sibling::div::text() # score block 如果事件时间包含值 63 并且相邻元素中的分数为 0:0,绕过这些查询并获取父元素的正确方法是什么? 试试这个: //div[@class="sport-base-event"][span[contains(text(),"63")] and span[text()="0:0"]] 这将得到那些具有包含 span 的 63 和具有值 span 的 0:0 的 div
我正在学习自动化,这是我的第二个脚本..我想做一些非常非常简单的事情,请访问 https://demoqa.com/ 单击“小部件”,然后单击“滑块”,但我尝试了所有元素,但不是
如何递归匹配所有包含文本的子节点。 如果我有一棵像这样的树 桌子 t TD “你好” TD 乙 “你好” t TD “致敬” TD 嗯 “你好” 我如何匹配每个...
我正在寻找自动单击网站上按钮的解决方案。我阅读了多个网站,并了解如何使用网站上元素的 Xpath。我使用了名为“Laura
在 python selenium 中使用 get_attribute() 查找 xpath
这是一种有点倒退的网络抓取方法。在我已经使用 text()= 标识符找到 Web 元素之后,我需要找到它的 xpath 因为 xpath 值不同...
xmllint --xpath <rdf:RDF><channel><title>
我已经查看了前三个搜索页面中的每个答案,但无法找到解决方案;第 2 页之后的问题甚至不再相关。 在此 RSS 提要中: 我已经浏览了这些前三个搜索页面中的每个答案,但无法找到解决方案;第 2 页之后的问题甚至不再相关。 在此 RSS 提要中: <?xml version="1.0" encoding="utf-8"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns="http://purl.org/rss/1.0/"> <channel rdf:about="https://www.myfeed.tld/"> <title>My Feed</title> <link>https://www.myfeed.tld/</link> </channel> <item rdf:about="https://www.myfeed.tld/mypost"> <title><![CDATA[Posting to SO SO Good]]></title> <link>https://www.myfeed.tld/mypost</link> <dc:date>2024-06-19T07:48:00-05:00</dc:date> </item> </rdf:RDF> 我需要获取以下内容的文本内容: <rdf:RDF><channel><title> <rdf:RDF><item><title> <rdf:RDF><item><dc:date> 基于这个答案,我想我应该能够使用: xmllint --xpath "//*[local-name()='rdf:RDF']/channel/title/text()" feed.rss xmllint --xpath "//*[local-name()='rdf:RDF']/item/title/text()" feed.rss xmllint --xpath "//*[local-name()='rdf:RDF']/item/*[local-name()='dc:date']/text()" feed.rss 我尝试了所有变体,但我只得到:XPath set is empty 使用 local-name() 时不需要命名空间前缀。另外,没有前缀的元素仍然有一个默认的 xmlns="http://purl.org/rss/1.0/" 命名空间,所以 local-name() 也必须在那里使用 //*[local-name()='RDF']/*[local-name()='channel`]/*[local-name()='title']/text() 或者,可以按如下方式使用命名空间 printf "%s\n" "seetrootns" "xpath //rdf:RDF/defaultns:channel/defaultns:title/text()" | xmllint --shell feed.rss
使用 python-docx-oss,我使用以下代码(我想将标题 3 样式写入 TXT 文件,并仅包含 3 级编号的大纲/级别,即 x.x.x): 从 docx 导入文档...
我有一个 HTML 表,其中可能缺少或格式错误的 colspan 值: &l... 我有一个 HTML 表格,其中可能缺少或格式错误 colspan 值: <table border="1"> <tbody> <tr> <th>A</th> <th>B</th> <th>C</th> <th>D</th> <th>E</th> <th>F</th> <th>G</th> <th>H</th> <th>I</th> <th>J</th> <th>K</th> <th>L</th> <th>M</th> </tr> <tr> <td >1</td> <td colspan="2" >2</td> <td colspan="-2" >3</td> <td colspan="*2#%@!" >4</td> <td colspan="2.7" >5</td> <td colspan="-2.3" >6</td> <td colspan="2e1" >7</td> <td colspan=" 2" >8</td> </tr> </tboby> </table> 我想使用 HTML4~5 规范获取每个 colspan 的 td 值(我目前正在尝试找出 W3C 规范告诉我们的内容)。现在假设上面代码片段的结果是我的预期输出: A B colspan 解析值 未定义 1 "2" 2 "-2" 1 "*2#%@!" 1 "2.7" 2 "-2.3" 1 "2e1" 2 " 2" 2 如何使用 XPath 3.1 实现它? 编辑 我写了这个 XPath 表达式: //td/( (1, @colspan[. castable as xs:double]) => max() => xs:integer() ) 但是它将 "2e1" 转换为 20 而不是 2。 考虑使用正则表达式模式匹配值来提取前导数字字符,忽略以第一个非数字字符开头的所有字符。然后成功匹配产生前导整数;其他所有结果均为 1: //td/(if (matches(@colspan,'^\s*\d+')) then replace(@colspan, '^\s*(\d+).*$', '$1') else '1')
用XPath获取HTML`td`元素的`colspan`属性值,就像浏览器理解它们一样
我有一个 HTML 表,其中可能缺少或格式错误的 colspan 值: &l... 我有一个 HTML 表格,其中可能缺少或格式错误 colspan 值: <table border="1"> <tbody> <tr> <th>A</th> <th>B</th> <th>C</th> <th>D</th> <th>E</th> <th>F</th> <th>G</th> <th>H</th> <th>I</th> <th>J</th> <th>K</th> <th>L</th> <th>M</th> </tr> <tr> <td >1</td> <td colspan="2" >2</td> <td colspan="-2" >3</td> <td colspan="*2#%@!" >4</td> <td colspan="2.7" >5</td> <td colspan="-2.3" >6</td> <td colspan="2e1" >7</td> <td colspan=" 2" >8</td> </tr> </tboby> </table> 我想使用 HTML4~5 规范获取每个 colspan 的 td 值(我目前正在尝试找出 W3C 规范告诉我们的内容)。现在假设上面代码片段的结果是我的预期输出: A B colspan 解析值 未定义 1 "2" 2 "-2" 1 "*2#%@!" 1 "2.7" 2 "-2.3" 1 "2e1" 2 " 2" 2 如何使用 XPath 3.1 实现它? 编辑 我写了这个 XPath 表达式: //td/( (1, @rowspan[. castable as xs:double]) => max() => xs:integer() ) 但是它将 "2e1" 转换为 20 而不是 2。 考虑使用正则表达式模式匹配值来提取前导数字字符,忽略以第一个非数字字符开头的所有字符。然后成功匹配产生前导整数;其他所有结果均为 1: //td/(if (matches(@colspan,'^\s*\d+')) then replace(@colspan, '^\s*(\d+).*$', '$1') else '1')
在此输入图像描述 我能够访问包含 CSCI 12 的标签 "//span[包含(., '" + CSCI + "') 和包含(., '" + 12 + "')]" 但我卡住了
我有一个类似于以下内容的XML文档。 我有一个类似于以下内容的 XML 文档。 <library> <artist name="a"> <album name="1"></album> <album name="2"></album> </artist> <artist name="b"> <album name="8"></album> <album name="9"></album> </artist> </library>` 我正在 Ubuntu 上的 Vala 中编写一个应用程序,并使用 libxml2 库来操作 XML 文档。我想获取所有 album 节点,无论它们在文档中的位置如何。我编写了以下代码来完成上述工作。 document = Xml.Parser.parse_file (PATH_TO_DB); ... Xml.XPath.Context context; unowned Xml.XPath.Object *object; context = new Xml.XPath.Context(document); object = context.eval("//album"); if(object->nodesetval->is_empty()) return null; return object->nodesetval->item(0); ... 此 XPath 查询仅返回 artist a 下的专辑,即专辑 1 和 2。但是,context.eval("/library/artist[@name="b"]/album"); 会返回 artist b 下的所有专辑。 上面所示代码的 Python 等效项正在生成所需的结果。 doc = libxml2.parseFile("data.xml") ctxt = doc.xpathNewContext() res = ctxt.xpathEval("//album") Vala 代码有什么问题? 首先,您应该通过检查 object->type == Xml.ObjectType.NODESET 来检查返回的对象是否是 NodeSet。 接下来,您仅返回结果节点集中的第一项。有 nodeset->length() 项。 void main() { var document = Xml.Parser.parse_file ("file.xml"); run_query("//album", document); run_query("/library/artist[@name=\"b\"]/album", document); } void run_query(string query, Xml.Doc* document) { stdout.printf("Query: %s\n", query); Xml.XPath.Context context; unowned Xml.XPath.Object *object; context = new Xml.XPath.Context(document); object = context.eval(query); assert(object->type == Xml.XPath.ObjectType.NODESET); if(object->nodesetval->is_empty()) { stdout.printf("empty"); return; } for (var i = 0; i < object->nodesetval->length(); i++) { var node = object->nodesetval->item(i); stdout.printf("node %s name=\"%s\"\n", node->name, node->get_prop("name")); } } 产品: Query: //album node album name="1" node album name="2" node album name="8" node album name="9" Query: /library/artist[@name="b"]/album node album name="8" node album name="9"
无法单击元素并使用 xpath 和 id-selenium 抓取网页
我一直在尝试在 Selenium 库的帮助下使用 xpath 和元素 id 创建代码来选择网页上的元素 - https://tmrsearch.ipindia.gov.in/eregister/ 。我提到了两个
我知道 XML 不允许其中包含 NUL 字节,但我认为它可以以某种方式与 JSON 一起使用: parse-json("""\u0000""") => 序列化(map{"method": &quo...
使用 XPath 3.1 以编程方式生成包含“null”值的数组
我有一张代表有间隙数组的地图;键是数组的索引: 让 $m := map{1: "val1", 2: "val2", 5: "val5", 7: "val7"} 返回 现在我会