Tridion Core Service(Tridion 2011 SP1)を使用して、特定のカテゴリIDのキーワードのリストを取得しています。
CoreService2010Client client = new CoreService2010Client();
XElement xmlCategoryKeywords = client.GetListXml(category.Id,
new KeywordsFilterData());
これにより、4レベルの深さの分類法を表すフラットなXML構造のように見えるものが返されます。
ドキュメントには、これを操作するためのアプローチの詳細が記載されています。
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);
}
ただし、これには各キーワードのみが表示されます。KeyboardDataオブジェクトにはプロパティが含まれているParentKeywords
ため、メモリ内に階層を構築できます。
階層構造でコアサービスからXMLを取得することは可能ですか?または、このデータを操作する簡単な方法はありますか?