---
title: "アイテムの分岐にアクセスする"
slug: "access-a-branch-of-items"
abstract: "再帰手法とSitecoreを使って分岐のアイテムにアクセスする方法。Data.Items.Item.Childrenプロパティ。"
---
# アイテムの分岐にアクセスする

再帰的手法とSitecore.Data.Items.Item.Childrenプロパティを用いて、ブランチ内のすべてのアイテムにアクセスできます。例えば、マスターデータベースの */Sitecore/Content/Home*アイテムとその子孫を処理する場合:

Sitecore.Data.Database master = Sitecore.Configuration.Factory.GetDatabase("master");
Sitecore.Data.Items.Item home = master.GetItem("/sitecore/content/home");
ProcessRecursively(home);

...

 private void ProcessRecursively(Sitecore.Data.Items.Item item)
 {
 foreach(Sitecore.Data.Items.Item child in item.Children)
 {
 // Process child item
 ProcessRecursively(child);
 }
 }

> !警告再帰メソッドが引数を自分自身に渡すと、そのメソッドは無限ループを実装します。

分岐内の根項目を処理するのを避けるために、ループ内の処理ロジックを子を反復する再帰メソッドに移し、その論理では再帰メソッドに渡された項目の代わりに子項目を処理します。例えば、*Master*データベース内の*/Sitecore/Content/Home*項目の子孫のみを処理する場合:

Sitecore.Data.Database master = Sitecore.Configuration.Factory.GetDatabase("master");
Sitecore.Data.Items.Item home = master.GetItem("/sitecore/content/home");
ProcessRecursively(home);

...

private void ProcessRecursively(Sitecore.Data.Items.Item item)
{
 foreach(Sitecore.Data.Items.Item child in item.Children)
 {
 // Process child item
 ProcessRecursively(child);
 }
}

> !注Sitecoreクエリを使って、子孫軸または子孫軸のいずれかを使ってブランチ全体にアクセスすることもできます。