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

时间:2016-02-05 09:21:57

标签: rest xpath pagination qlikview

我们有一个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具有分页功能,您可以使用此xml文件底部的链接加载接下来的60个条目。

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

分页类型:Next URL

下一个网址字段路径:

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

它似乎不起作用......

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

我使用Xpath语法来定位链接href,但也许这不是要走的路?或者REST连接器可能没有使用Xpath语法?

真的希望有人能帮帮我!

2 个答案:

答案 0 :(得分:1)

实际上,事实证明这似乎是由于“Qlik REST Connector 1.0”中的“错误”,因此分页不起作用。

但有一个解决方法:

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)找到从该子选择加载的LOAD语句,其中RESIDENT [MasterREST在加载脚本中进一步向下,并确保对href的引用更改为[attr:href] - 否则您将得到一个加载时出错信息。

更改后应该如下所示:

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

答案 1 :(得分:0)

这对我有用:

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

你的也应该工作,也许你使用的任何东西都不同意双引号而不是单引号。