Я использую Tridion Core Service (Tridion 2011 SP1) для получения списка ключевых слов для данного идентификатора категории.
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 из базовой службы с иерархической структурой? Или более простой способ работы с этими данными?