CAML查询以查找嵌套在文档库树中的特定SPFolder

时间:2008-10-06 14:49:04

标签: sharepoint caml

在搜索SPFolders而不是文件时,或搜索自定义内容类型时,似乎使用CAML和SPQuery搜索无法正常使用自定义元数据。我一直在使用U2U测试各种查询,而不是在任何地方。该主题的文档不是很完整,谷歌也没有帮助。

在一个测试中,我试图在树中找到任何特定自定义内容类型的SPFolders。如果我正确理解CAML,这应该有效:

<Query>
    <Where>
        <Eq>
            <FieldRef Name='ContentType' />
            <Value Type='Text'>CustomTypeName</Value>
        </Eq>
    </Where>
</Query>

在另一个测试中,我正在尝试找到任何将自定义元数据属性设置为特定值的SPFolder。

<Query>
    <Where>
        <Eq>
            <FieldRef Name='CustomProp' />
            <Value Type='Text'>SpecificPropValue</Value>
        </Eq>
    </Where>
</Query>

在这两种情况下,我都将搜索的根目录设置为包含文件夹的文档库,其中包含文件夹,其中包含文件夹(phew。)另外,我正在设置SPQuery以递归搜索。

我正在寻找两步的文件夹是树中最远的文件夹。我不想一直迭代来手动找到有问题的文件夹。

编辑知道我使用SPList.GetItems和SPQuery作为参数,以及SPWeb.GetSiteData和SPSiteDataQuery作为参数也可能会有所帮助。目前看来,这些查询的搜索集中都没有包含文件夹。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

经过更多的研究,我正在回答我自己的问题。

显然,我用来查询的方法不会将SPFolders作为结果集中的项返回。只返回列表项,基本上只是文档。

我的修复是对具有特定元数据标签/值的所有文档执行CAML查询,然后使用第一个文件的父文件夹作为集合的代表文件夹。适合我的需要。

答案 1 :(得分:1)

尝试将SharePoint ManagerStramit CAML Viewer添加到您的工具集。

我发现两者对于解决CAML问题非常重要。