0

我正在为我的公司编写一个内部 API,它允许用户传入 SharePoint CAML 查询。在我的函数中,我处理用户的查询,并向其中添加一些额外的元素,然后使用最终查询从 SharePoint 检索所需的数据。

例子:

用户传入:

<Query>
   <Where>
      <Eq>
         <FieldRef Name='Category' />
         <Value Type='Choice'>Bug</Value>
      </Eq>
   </Where>
</Query>

在内部,我将查询修改为:

<Query>
   <Where>
      <And>
         <Eq>
            <FieldRef Name='Category' />
            <Value Type='Choice'>Bug</Value>
         </Eq>
         <Eq>
            <FieldRef Name='AssignedTo' />
            <Value Type='Integer'><UserID /></Value>
         </Eq>
      </And>
   </Where>
</Query>

您认为验证用户发送的查询的最佳方式是什么?

4

1 回答 1

2

如果您要允许的查询受到相当的限制,那么构建一个模式来表示有效查询可能是一种很好的方法。然后您可以根据该架构查看他们的 xml 是否有效。另外,我知道您可以从代码中使用 CAML Builder dll。我无法立即找到这方面的示例,但可能有一种方法可以在 try/catch 块中使用它的 CAML 构建方法来阻止构建无效查询。

此外,在我看来,您可能需要注意这样一个事实,即需要使用可能与显示名称不同的字段的内部名称来构建 CAML 查询的 FieldRef。

于 2011-04-27T00:16:44.810 回答