【问题标题】:xpath troubles - no resultsxpath 问题 - 没有结果
【发布时间】:2016-04-10 20:33:54
【问题描述】:

在下面的代码中使用 xpath "//*" 将检索整个 XML 文档。

=IMPORTXML("https://api.bol.com/catalog/v4/search/?apikey=myapikey&format=xml&q=isbn","//*")

我无法仅提取特定元素,例如标题。我查看了 xpath 文档,尝试了十几个变体,但我一直得到一个空的结果。提取标题的正确 Xpath 是什么?

可以在此处找到示例 XML 文档: https://developers.bol.com/wp-content/pagina/handleiding/xml/search.xml

此 XML 文件似乎没有任何与之关联的样式信息。文档树如下所示。

   <SearchResults xmlns="http://api.bol.com/openapi-4.0.0">
     <OriginalRequest>
       <Category/>
     </OriginalRequest>
     <TotalResultSize>4875</TotalResultSize>
     <Products>
       <Id>9200000026739211</Id>
       <EAN>5051888195819</EAN>
       <GPC>dvd</GPC>
       <Title>Harry Potter - Complete 8-Film Collection</Title>
       <SpecsTag>Warner Home Video</SpecsTag>
       <Summary>Dvd | 8 disks | mei 2014 | null</Summary>
       <Rating>48</Rating>
       <ShortDescription>

【问题讨论】:

标签: xml xpath google-sheets


【解决方案1】:

您可以使用这种迂回的解决方法:

=arrayformula(REGEXREPLACE(filter(index(IMPORTDATA("https://developers.bol.com/wp-content/pagina/handleiding/xml/search.xml"),,1),left(index(IMPORTDATA("https://developers.bol.com/wp-content/pagina/handleiding/xml/search.xml"),,1),7)="<Title>"),"<Title>|</Title>",""))

我在这里做的是首先使用importdata 来拉入xml。你会注意到它跨越了不止一列,所以为了忽略额外的数据,我将它包装在 INDEX 公式中,以便我可以嵌套它并按它过滤。

然后我使用filter 函数并指定我的条件是行必须以我选择的标签开头,在这种情况下它是&lt;Title&gt;,使用Left 函数。

此时您会看到唯一显示的值是所有标题行 - 然后我使用 regexreplace 清理以删除开始和结束标签。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-04
    • 2013-06-23
    • 2020-06-30
    • 1970-01-01
    • 2014-05-03
    • 2011-11-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多