tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板 [ツリー表示へ]   [Home]
一括表示(VB6.0)
タイトルXMLへのアクセス方法
記事No13969
投稿日: 2009/08/24(Mon) 01:34
投稿者シス
いつもお世話になっております。

XMLの知識がないため、ご教授お願いできませんでしょうか?
現在XMLファイルにMsxml2.DOMDocumentを使ってアクセスし、
SelectSingleNodeを使ってtestタグ内の文字を取得しています。
同じ階層にtestタグが2つある時はどのようにすればいいのでしょうか?
例:
<test>あああ</test>
<test>いいい</test>

よろしくお願い致します。

[ツリー表示へ]
タイトルRe: XMLへのアクセス方法
記事No13970
投稿日: 2009/08/24(Mon) 01:55
投稿者魔界の仮面弁士
> 同じ階層にtestタグが2つある時はどのようにすればいいのでしょうか?

それらの要素をどうしたいのかを書かないと質問にならないような。(^^;

とりあえず、個々の test 要素を取得したいという意味であれば、

(案1) SelectSingleNode で「<test>あああ</test>」を取得し、
 さらにそこから、nextSibling で、弟ノード「<test>いいい</test>」を得る。

(案2) SelectNodes で <test> ノードの一覧を取得し、
 それを For Each またはインデックス指定で、それぞれのノードを得る。

などがあります。他にもいろいろな方法がありますけれども。


> また現在の階層にあるタグを全て列挙する方法はありませんでしょうか?
タグというのが要素ノードという意味であれば、その一つ親の要素ノードに対して、
childNodes プロパティを取り出せばよいと思います。

例えば、

<root>
 <a id="1">
  <b id="2"/>
  <b id="3"/>
 </a>
 <a id="4">
  <b id="5"/>
  <b id="6"/>
 </a>
</root>

という構造であったときに、現在の位置が <a id="1"> であったとすれば、
.childNodes で、<b id="2"> と <b id="3"> が得られますし、
.parentNode.childNodes なら、<a id="1"> と <a id="4"> が得られます。

もし、現在の位置が <b id="2"> の時に、id が 2,3,5,6 の <b> を取得したいのなら、
.selectNodes("/root/a/b") を使うという手もあります。

[ツリー表示へ]
タイトルRe^2: XMLへのアクセス方法
記事No13971
投稿日: 2009/08/24(Mon) 02:02
投稿者シス
あっすみません、かなり焦ってて質問がいい加減な書き方になってしまいました。
修正しておきましょうか。

とても助かりました。
For Eachの方で個々の test 要素が取ることにしました!
本当にありがとうございます!

[ツリー表示へ]