Tridion Core Service(Tridion 2011 SP1)を使用して、特定のカテゴリIDのキーワードリストを取得しています。Tridion Coreサービス - 階層分類を使用して作業する
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);
}
しかし、これが唯一の各キーワードの一覧が表示されます。 KeywordDataオブジェクトにはプロパティParentKeywords
が含まれているため、階層をメモリに構築することができます。
コアサービスからXMLを階層構造で取得することは可能ですか?このデータを扱う簡単な方法は?
あなたのアルゴリズムは、関連キーワードを子キーワードとしてマークします。 UsingItemsFilterDataの代わりにChildKeywordsFilterDataを使用する必要があります。複数の親を持つキーワードをどう扱っていますか? –