2009/08/25(Tue) 09:50:55 編集(投稿者)
■No40399 (プリマ さん) に返信
> という階層を持ったものを
(中略)
> 各オブジェクトは
> 名前、一つ上の親の名前、一つ下の子の名前を持ったクラスです
その、「〜という階層を持ったもの」がどのように管理されているかにもよりますが、
たとえば、Xml や TreeNode のような構造を取れるのであれば、再帰的に処理できるかと思います。
> こういったように
nameC の階層が、私の想定した出力結果と異なる…。
> テキストに書き出すにはどうしたらいいのでしょうか?
たとえば XML の階層であれば、こんな感じで出力できます。
手元に VS2008 が無いので、メモ帳開発ですが:
// C:\WINDOWS\Microsoft.NET\Framework\v3.5\csc.exe /out:c:\sample.exe c:\sample.cs
using System;
using System.Xml.Linq;
class Foo {
static void Main() {
// 元データとなる階層情報
XDocument doc = CreateSampleData();
// テキストに出力
// (ここではテストして、コンソールに出力しています)
Write(doc.Root, 0);
Console.WriteLine("Enter を押してください。");
Console.ReadLine();
}
static void Write(XElement node, int indent) {
string blank = new string(' ', indent * 4);
Console.WriteLine(blank + node.Name + "{");
foreach(XElement child in node.Elements()) {
Write(child, indent + 1);
}
// blank += new string(' ', node.Name.ToString().Length);
Console.WriteLine(blank + "}");
}
static XDocument CreateSampleData() {
return XDocument.Parse(@"
<root>
<nameA>
<nameB>
<nameC>
<nameH>
<nameI>
<nameK/>
</nameI>
<nameJ>
<nameL>
<nameO/>
</nameL>
<nameM>
<nameP/>
</nameM>
<nameN>
<nameQ/>
</nameN>
</nameJ>
</nameH>
</nameC>
<nameD>
<nameF/>
</nameD>
<nameE>
<nameG/>
</nameE>
</nameB>
</nameA>
</root>"
);
}
}