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]);
我们在某个网站上有一个 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]);