使用Core Service获取出版物的所有文件夹

d k*_*d k -4 tridion tridion-2011

使用Tridion Core Service如何获取特定出版物的现有文件夹.我正在使用SessionAwareCoreService2010Client类来创建文件夹,但无法在上面的类中找到核心服务中的正确方法来获取所有现有文件夹的列表.请回答示例代码.

任何帮助,将不胜感激.

Nun*_*res 16

我宁愿给你一些思考的东西,而不是一些可以完成工作的示例代码(给一个人一条鱼和所有这些).

首先 - 你说你正在使用SessionAwareCoreService2010Client希望,因为你使用的是Tridion 2011 GA而不是SP1.否则我肯定会建议使用预编译的客户端SessionAwareCoreServiceClient.

现在你说你想要所有的文件夹.您是否希望在一次调用中发布中的所有文件夹,或者您是否希望以递归方式"遍历"层次结构?

所有组织项都支持GetList调用.使用CoreService,这可以通过使用client.GetListXml(subjectId, subjectRelatedFilter)调用来实现.如果你只想要的文件夹,那么你将通过创建一个启动OrganizationalItemItemsFilterData对象,并指定你想类型的对象Folder将在filter.ItemTypes阵列(沿行filter.ItemTypes = new[]{ItemType.Folder};

现在,您可以实现一个方法,该方法将为客户端返回的每个对象递归调用自身.GetList调用并从对象中读取您需要的任何属性.

如果你真的需要示例代码,那么我建议谷歌搜索它.


Fra*_*len 10

我现在无法测试它,但它会是这样的:

var rootFolderUri = "tcm:1-1-2";
var filter = new OrganizationalItemItemsFilterData();
filter.ItemTypes = new[] { ItemType.Folder };
filter.Recursive = true;

var listXml = client.GetListXml(rootFolderUri, filter);

foreach (var itemElement in listXml.Descendants())
{
    ...
}
Run Code Online (Sandbox Code Playgroud)