Qlikview REST 连接器分页命名空间 XML

Qlikview REST connector pagination namespaced XML

我们在某个网站上有一个 XML 文件,看起来像这样(机密部分已删除)

<?xml version="1.0" encoding="utf-8" standalone="yes"?>  
<feed xml:base="https://somewebsite.com/crm/" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns="http://www.w3.org/2005/Atom">  
  <title type="text">Accounts</title>  
  <id></id>  
  <updated>2016-02-04T08:36:56Z</updated>  
  <link rel="self" title="Accounts" href="Accounts" />  
<entry>  
    <title type="text"></title>  
    <updated>2016-02-04T08:36:56Z</updated>  
    <author>  
      <name />  
    </author>  
    <content type="application/xml">  
      <m:properties>  
        <d:Type>A</d:Type>  
        <d:UniqueTaxpayerReference m:null="true" />  
        <d:VATLiability m:null="true" />  
        <d:VATNumber m:null="true" />  
        <d:Website m:null="true" />  
      </m:properties>  
    </content>  
  </entry>  
  <link rel="next" href="https://somewebsite.com/Accounts?$skiptoken=guid'ee6bc390-a8ac-4bbd-8a4d-0a1f04ab9bd3'" />  
</feed>  

我们使用新的 Rest 连接器从此 XML 文件中获取数据。 XML 有分页,每 60 个条目你可以用这个 xml 文件底部的 link 加载下一个 60。

我遇到的问题是,在 REST 连接器中,我们希望使用这些设置启用分页:

分页类型:Next URL

下一个URL字段路径:

/*[name()="feed"]/*[name()="link"][contains(@rel,"next")]/@href

好像不行...

旁注:XML 文件具有名称空间,因此我需要以这种方式定位元素而不是 /feed/link/...

我正在使用 Xpath 语法来定位 link href,但也许这不是正确的方法?或者 REST 连接器未使用 Xpath 语法?

真心希望有人能帮帮我!

这对我有用:

/*[name()='feed']/*[name()='link'][@rel='next']/@href

你的实际上也应该有效,也许你使用的任何东西都不同意双引号而不是单引号。

实际上,这似乎是由于 "Qlik REST Connector 1.0" 中的 "bug",所以分页不起作用。

但是有一个修复方法:

1) 确保 Qlik REST Connector 1.0 连接对话框的 NextUrl 设置为:

      feed/link/attr:href

2) 当使用 SELECT 按钮并通过向导生成 SQL 时,您必须修改如下所示的子 SELECT:

.......

(SELECT  
"attr:rel" AS "rel",  
"attr:title" AS "title",  
"attr:href" AS href,  
"__FK_link"  
FROM "link" FK "__FK_link"),  
.....  

在第 05 行,您必须删除文本 AS href。

所以它应该是这样的:

.....  
(SELECT  
"attr:rel" AS "rel",  
"attr:title" AS "title",  
"attr:href",  
"__FK_link"  

FROM "link" FK "__FK_link"),  
....  

3) 找到从这个子 select 加载的 LOAD 语句,在加载脚本中使用 RESIDENT [MasterREST 进一步向下,并确保对 href 的引用更改为 [attr:href] -否则你会在加载时收到错误消息。

更改后应该如下所示:

[link]:  
LOAD [rel],  
  [title],  
  [attr:href],  
  [__FK_link] AS [__KEY_feed]  
RESIDENT RestConnectorMasterTable  
WHERE NOT IsNull([__FK_link]);