使用Tridion Core Service如何获取特定出版物的现有文件夹。我正在使用SessionAwareCoreService2010Client类来创建文件夹,但无法在上面的类中找到核心服务中的正确方法来获取所有现有文件夹的列表。请回答示例代码。
任何帮助都将不胜感激。
答案 0 :(得分:15)
我宁愿给你一些思考的东西,而不是一些可以完成工作的示例代码(给一个人一条鱼以及所有这些)。
首先 - 你说你正在使用SessionAwareCoreService2010Client
,因为你使用的是Tridion 2011 GA而不是SP1。否则我肯定会建议使用pre-compiled client和SessionAwareCoreServiceClient
。
现在你说你想要所有文件夹。您是否希望在一次调用中发布中的所有文件夹,或者您是否希望以递归方式“遍历”层次结构?
所有组织项都支持GetList调用。使用CoreService,可以通过client.GetListXml(subjectId, subjectRelatedFilter)
调用来实现。如果您只想要文件夹,则首先要创建一个OrganizationalItemItemsFilterData
对象,并指定只需要Folder
数组中filter.ItemTypes
类型的对象(沿{{1行) }}
现在,您可以实现一个方法,该方法将为客户端返回的每个对象递归调用自身.GetList调用并从对象中读取您需要的任何属性。
如果确实需要示例代码,那么我建议googling for it.
答案 1 :(得分: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())
{
...
}