環境:WinXPHOME Delphi7.0 Pro
XMLDocumentコンポーネントを使用しています。
---------------------------------------------
<?xml version="1.0" encoding="Shift_JIS"?>
<list>
<category name="日本語">
<category name="あ行">
<aaa>あああ</aaa>
<aaa>いいい</aaa>
<aaa>ううう</aaa>
</category>
<category name="か行">
<aaa>かかか</aaa>
<aaa>ききき</aaa>
<aaa>くくく</aaa>
</category>
</category>
</list>
---------------------------------
上の様なXMLファイルがあり、この2階層目までの日本語の部分のみをTreeViewに表示し、以下の様なツリーになりました。
---------------------------------
日本語
|_あ行
|_か行
---------------------------------
TreeViewの「あ行」「か行」の様に、それ以下にツリー上で階層の無い部分をクリックした時に、別に用意したListBoxにXMLの「あ行」「か行」以下の階層のデータ(あああ、かかかなど)を表示したと考えています。
クリックされた「あ行」の文字列を元に、同じ文字列のname属性の値をもつノードを取得したく、色々試してみたのですがわかりませんでした。
どなたか、ご享受いただけないでしょうか。
以下、途中ですがソースです。
Root := XMLDocument1.DocumentElement;
xmlCategory := Root.ChildNodes[0];
xmlCategoryItem := xmlCategory.ChildNodes[0]; ←ここが問題だと思う。
//選択カテゴリの子ノードをリストへ追加
while Assigned(xmlCategoryItem) do
begin
ListBox1.Items.Add(xmlCategoryItem.Text);
xmlCategoryItem := xmlCategoryItem.NextSibling;
end;
私、あいにく、Pro版ではないので、XMLDocumentコンポーネントがどうなってるのか分からないんですよ。。。ただ、http://www.wakhok.ac.jp/~tetsuo/delphi/text/chap_c/pb_c06.html
で配布されてるUseXMLを使いつつ、かつココで示されてるActiveXからのXMLでXMLファイルを扱ってますが、、、
殆ど同じでしょうかねぇ?
これでいいなら説明しますが、、、いかが?
ツイート | ![]() |