- PR -

属性が特定の値のみ配下の属性を取得する。

1
投稿者投稿内容
BRYAN
会議室デビュー日: 2004/10/06
投稿数: 4
投稿日時: 2004-10-06 19:22
VBSCRIPTにてXMLの勉強を開始したばかりで初心者です。
初歩的な質問ですみません。教えてください。
以下の様な条件でデータを抽出したいとき、selectNodesでservicenameを指定すれば
Servicenameが取れるところまでは判ったのですが、その配下の属性の値を
取る方法がわかりません。どなたか教えていただけませんか?


条件
 devicenameタグのservicenameがCardの場合は
抽出したいデータ
  Deviceタグ UnitStatus属性
MediaStatusタグ Value属性
BinStatusタグ Value属性


条件
 Deviceタグのservicename属性がPrinterの場合は
抽出したいデータ
Deviceタグ UnitStatus属性
MediaStatusタグ Value属性
PaperStatusタグ Value属性


<device servicename="Card" UnitStatus="HEALTHY">
  <MediaStatus Value="NOTPRESENT"/>
  <BinStatus Value="BINOK"/>
  <CaptureCards Value="2"/>
</device>
  <device servicename="Printer" UnitStatus="HEALTHY">
  <MediaStatus Value="PRESENT"/>
  <PaperStatus Value="FULL"/>
  <BinStatus Value="OK"/>
</device>
MMX
ぬし
会議室デビュー日: 2001/10/26
投稿数: 861
投稿日時: 2004-10-06 23:32
> selectNodesでservicenameを指定すれば
> Servicenameが取れるところまでは判ったのですが、その配下の属性の値を
> 取る方法がわかりません。

木の構造上は @servicename ノードの 「直接の」配下にはなってませんね、
取りたい属性のノードは。

二つの場合で抽出したい属性は同じです、場合に分ける意味はあるのか?

現在ノードから、相対位置を参照したいのなら、XPath式をそのように書くだけ
親ノードは ディレクトリと同じく
../

http://www.cityfujisawa.ne.jp/~yanai/xml/index.html
XPathってなあに

[ メッセージ編集済み 編集者: MMX 編集日時 2004-10-06 23:35 ]
BRYAN
会議室デビュー日: 2004/10/06
投稿数: 4
投稿日時: 2004-10-08 00:20
アドバイスいただきありがとうございます。

>木の構造上は @servicename ノードの 「直接の」配下にはなってませんね
そうですね。
Xpathの基本的な考え方を理解していませんでした。
おかげさまで出来ました。

>二つの場合で抽出したい属性は同じです、場合に分ける意味はあるのか?
今回例にあげたデータが、たまたま同じ属性のデータだったので
このような結果になりました。

_________________
1

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