我正在使用 Tridion 核心服务 (Tridion 2011 SP1) 来检索给定类别 ID 的关键字列表。
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?或者更简单的方法来处理这些数据?