プロが教えるわが家の防犯対策術!

初めて質問させていただきます。
よろしくお願い致します。

XMLについて勉強を始めたばかりで、基本的な質問です。

<住所録>
<個人>
<住所>東京都</住所>
<氏名>○○</氏名>
</個人>
<個人>
<住所>千葉県</住所>
<氏名>××</氏名>
</個人>
</住所録>

上のように、住所と氏名の個人データが住所録として
登録されているようなXMLでは、タグ名が<個人><住所><氏名>と、同じものになってしまいます。

このようにタグ名が同じXMLファイルにアクセスして「<個人>というタグ名からその配下のNodeListを取得」するようなプログラムを作るとき、(言語はC++でDOMを使用します)

<住所>東京都</住所>
<氏名>○○</氏名>

<住所>千葉県</住所>
<氏名>××</氏名>

と、2つのNodeListを取得するにはどうすればいいのですか?
(この場合、タグ名が同じで、個人情報が2つですが、xmlではこの2つの個人情報の「”氏名○○”のリストのみ取得する」というように、Nodeを判定し条件にあった項目を取得することは可能ですか??)

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

A 回答 (2件)

「条件付でNodeListは取得できない」ではなく


「NodeListを取得するのに条件を与えられない」です。
こういった処理を望むのであれば、自分で処理を記述しなければならないということです。


childNodesプロパティで得られる情報は、当該ノードの子、全てをコレクションとして含むNodeListということになります。

「”氏名○○”のリストのみ取得する」という処理をしたいのであれば、『childNodesプロパティを使用して<個人>ノードを全て取得した後、さらに<氏名>ノードを取得して判断』という流れになるでのしょう。

この件に関して言えば、ネームスペースは『自分で判断する』必要があります。
    • good
    • 1
この回答へのお礼

お礼が遅くなり,申し訳ございません。
childNodesプロパティを使うのですね。ありがとうございます。
今、MSXMLパーサ4.0でDOMを使ってVC6.0で質問で挙げたようなxmlファイル操作のプログラムを作成しています。
COMプログラミングでの文法が難しく、childNodesでのノードの取りかたが分かりません・・・。
今、getTagNameで上のxmlファイルだと、<住所>を指定して最初の
<住所>東京都</住所>
しか取れません。<住所>千葉県</住所>も取るにはどうすればいいのでしょうか・・・別途新しい質問を立てたほうがいいのかも知れませんが、是非よろしくお願い致します。

お礼日時:2005/02/01 01:33

NodeListを取得するにはchildNodesプロパティが使えます。



条件付でNodeListを取得する方法は標準では提供されていないようです。MicrosoftのパーサだとSelectNodesというメソッドが提供されていますが...。

この回答への補足

迅速な回答、ありがとうございました。
条件付でNodeListは取得できない・・・ということでしょうか・・・
まだ勉強不足で完全には理解していないのですが、「名前空間」を使って、タグ名がかぶっていても欲しいリストだけ拾ってくる・・・ということはできないですか??

補足日時:2005/01/23 23:34
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています