- PR -

XMLの階層構造からディレクトリを作成する

1
投稿者投稿内容
未記入
会議室デビュー日: 2004/04/15
投稿数: 2
投稿日時: 2005-11-01 15:47
初めて投稿します。
下記のXML("DirInfo.xml")を読み込み、ディレクトリ構造を作成するメソッドをC#で作成しています。
<item>要素の属性typeが'root'または'folder'の場合にディレクトリを作成します。

サンプルメソッド(readTest())を作成したのですが、同一階層に全てのディレクトリが作成されてしまいます。
再帰的処理でディレクトリ構造を作りたいのですが、その場合<item>要素のNodeListを元にでできるのでしょうか?

DirInfo.xml----------------
<?xml version="1.0" encoding="UTF-8"?>
<root>
<item sceid="d0" type="root">
<name>folder0</name>
<item sceid="f1" type="content" />
<item sceid="d1" type="folder">
<name>folder1</name>
<item sceid="f2" type="content" />
<item sceid="d2" type="folder">
<name>folder2</name>
<item sceid="d3" type="folder">
<name>folder3</name>
<item sceid="f4" type="content" />
<item sceid="f11" type="content" />
</item>
</item>
</item>
<item sceid="f6" type="content" />
</item>
</root>

//readTest()----------------
private void readTest()
{
string xmlPath = "DirInfo.xml";//読み込むXMLファイルパス
string rootDir = "C:\\\\";//ディレクトリ作成先パス

XmlDocument doc = new XmlDocument();
doc.Load(xmlPath);

//item要素のNodeListを生成
XmlNodeList nl = doc.SelectNodes("//item");
foreach( XmlNode nd in nl)
{
//子要素がある場合
if(nd.HasChildNodes)
{
//属性'sceid'をディレクトリ名とする
string sceid = nd.Attributes["sceid"].Value;
Directory.CreateDirectory(Path.Combine(rootDir,sceid));
}
}
}

MMX
ぬし
会議室デビュー日: 2001/10/26
投稿数: 861
投稿日時: 2005-11-01 17:11
< item >要素のNodeListを元にでできるのでしょうか?

それ以外に、階層の情報を持っているものは 無いと思います
再帰をちゃんと書くか、parentnode を見るか、どちらかに

[ メッセージ編集済み 編集者: MMX 編集日時 2005-11-01 17:22 ]
未記入
会議室デビュー日: 2004/04/15
投稿数: 2
投稿日時: 2005-11-02 16:29
<item>要素のNodeListを生成し、再帰処理を実装し解決しました。
ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)