我正在尝试使用此GetListItemChanges方法:
<GetListItemChanges xmlns="http://schemas.microsoft.com/sharepoint/soap/">
<listName>States At A Glance</listName>
<viewFields></viewFields>
<since>2013-08-29T 19:52:52Z</since>
<contains></contains>
</GetListItemChanges>
有没有办法在“since”标签中使用动态日期。
例如,我希望字段值在当天的30天内发生变化。
更新
我读到当前的日期时间必须是UTC格式,所以尝试了以下代码:
(: SOAP payload, actual query goes here:)
let $soap-payload := ('<GetListItemChanges xmlns="http://schemas.microsoft.com/sharepoint/soap/">
<listName>States At A Glance</listName>
<viewName>
<FieldRef Name="ows_Title" />
</viewName>
<since>fn:concat(fn:substring(fn:current-dateTime(),1,19), 'Z')</since>
</GetListItemChanges>')
但代码不起作用,请转到以下错误消息:
XQuery Engine error. syntax error, unexpected "'QName'", expecting "')'". Connection String: XQUERY;UID=ms\orbitad;. Connection String: XQUERY;UID=ms\orbitad;.
任何想法,为什么代码不起作用?
我其实想做现在的日期--30。
首先,我将完成这项工作,然后我将在当前日期 - 30。
@Jens Erat, UTC日期时间采用以下格式 - “2014-01-23T 00:00:00Z”。 “T”和小时“00”之间有一个空格。
所以,我稍微修改了你的代码并使用了以下代码 {fn:concat(fn:substring((fn:current-dateTime() - xs:dayTimeDuration('P30D'))强制转换为xs:string,1,11),'',fn:substring((fn:current- dateTime() - xs:dayTimeDuration('P30D'))强制转换为xs:string,12,8),'Z')}。
但是,它抛出了错误:axiom_node_create_from_buffer失败了。
Unable to create payload for SOAP Request. Check payload in xquery.
Error type: XQuery Engine error. Module description accessed has invalid state
答案 0 :(得分:0)
您的更新代码存在多个问题。
$soap-payload
周围终止分配给'Z'
的大字符串,然后有Z
,然后开始下一个字符串。这不是有效的XQuery代码。你必须转义引号(如\'Z\'
),但这仍然不会执行代码。{...}
(如果您确实需要XML,而不是大字符串)或结束字符串,计算新日期,添加其余字符串和连接一切。如果您想要返回一个字符串,请使用此代码:
let $soap-payload := concat('<GetListItemChanges xmlns="http://schemas.microsoft.com/sharepoint/soap/">
<listName>States At A Glance</listName>
<viewName>
<FieldRef Name="ows_Title" />
</viewName>
<since>', fn:concat(fn:substring((fn:current-dateTime() - xs:dayTimeDuration('P30D')) cast as xs:string, 1, 19), 'Z'), '</since>
</GetListItemChanges>')
如果你想要XML:
let $soap-payload := <GetListItemChanges xmlns="http://schemas.microsoft.com/sharepoint/soap/">
<listName>States At A Glance</listName>
<viewName>
<FieldRef Name="ows_Title" />
</viewName>
<since>{ fn:concat(fn:substring((fn:current-dateTime() - xs:dayTimeDuration('P30D')) cast as xs:string, 1, 19), 'Z') }</since>
</GetListItemChanges>