我正在使用Tridion核心服务(Tridion 2011 SP1)来检索给定类别ID的关键字列表。Tridion核心服务 - 使用分层分类法
CoreService2010Client client = new CoreService2010Client();
XElement xmlCategoryKeywords = client.GetListXml(category.Id,
new KeywordsFilterData());
这返回什么似乎是一个扁平的XML结构,代表我们的深度为4级的分类。
文档细节的做法与此工作:
var categoryKeywords = xmlCategoryKeywords.Elements().Select(element =>
element.Attribute("ID").Value).Select(id => (KeywordData)client.Read(id, null)
);
foreach (KeywordData keyword in categoryKeywords)
{
Console.WriteLine("\t Keyword ID={0}, Title={1}", keyword.Id, keyword.Title);
}
然而,这只会列出每个关键字。 KeywordData对象包含属性ParentKeywords
,因此可以在内存中构建层次结构。
是否可以从具有分层结构的核心服务中检索XML?或者更简单的方式来处理这些数据?
您的算法还会将相关关键字标记为子关键字。您应该使用ChildKeywordsFilterData而不是UsingItemsFilterData。你如何处理具有多个父母的关键字? – 2012-03-02 10:47:15