- PR -

XMLのタグの値が取得できません

1
投稿者投稿内容
katsum
大ベテラン
会議室デビュー日: 2002/02/27
投稿数: 119
お住まい・勤務地: 東京都
投稿日時: 2002-03-16 00:58
<TagName>TagValue</TagName>

とあったときに、Node#getNodeName() でタグの名前 "TagName" を取得することはできるのですが、Node#getNodeValue() でタグの値 "TagValue" が取得できず null となります。

他に Node クラスの get 系メソッドを探してみましたが、getNodeValue() くらいしかそれらしいものが見当たらないので行き詰まってしまいました。ちなみに Node#getAttributes() を使って取得した属性に関しては Node#getNodeName() で属性名、Node#getNodeValue() で属性値が取得できます。

タグの値を取得するにはどうすればいいのでしょうか?
katsum
大ベテラン
会議室デビュー日: 2002/02/27
投稿数: 119
お住まい・勤務地: 東京都
投稿日時: 2002-03-16 10:52
解決しました。

私のように DOM 解析駆け出しの人はまずハマルと思いますので、解決に役立った文章を一部引用します。
この文章の通りさらに子供(達)の NodeList を取得し、取得した各 Node に対して getNodeValue() を行なうことにより "TagValue" が取得できました。

----引用 ここから ----
エレガントな抽象化には代価が伴います。
<tagname>Value</tagname>
というXMLの一部を考えてみてください。このテキスト値 (Value) は通常のJava String オブジェクトで表記され、単純な getValue 呼び出しによってアクセスできると読者は考えるかもしれません。実際には、テキストは tagname ノードの下の1つまたは複数の子 Node として扱われます。したがって、テキスト値を取得するには、tagname の子を走査して、それぞれの子の値を並べてストリングにする必要があります。これにはもっともな理由があります。tagname の中には他の組み込みXML要素が含まれる可能性があり、その場合、このテキスト値を取得することにはあまり意味がありません。しかし現実の世界では、テキスト値を取得することに意味がある80 %のケースで利用できるような便利な機能が存在しないため、コーディング・エラーが頻繁に発生しています。
----引用 ここまで ----

全文は次のURLです。
http://www-6.ibm.com/jp/developerworks/xml/020308/j_x-domjava.html
1

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