[PHP-users 30414] Re: getElementByIdを使って特定要素のテキストノード取得
Sunami Marzzuo
sunami @ marzzuo.info
2006年 9月 22日 (金) 21:52:50 JST
Marzzuoと申します。
nodeValueはメソッドではなくプロパティですので
echo $titles->nodeValue;
とすれば値を得られませんか?
Masuda wrote:
>伊藤様、ご返信ありがとうございます。
>
>
>On Fri, 22 Sep 2006 19:50:07 +0900
>"yusuke ito" <ito.ysk @ gmail.com> wrote:
>
>
>
>>http://jp.php.net/manual/ja/function.dom-domdocument-getelementbyid.php
>>
>>のUser Contributed Notesに「DOMDocument->getElementById()は期待した結果を返さない」と書かれてますね。
>>で、代替のグローバル関数を提示してくれています。この関数は期待したとおりに動き、DOMElementオブジェクトを返してくれます
>>以下転載:
>>function getElementById(DOMDocument $doc, /*string*/ $id,
>> DOMNode $node = NULL) {
>> if ($node === NULL) return getElementById($doc, $id, $doc->documentElement);
>> $children = $node->childNodes;
>> for ($i = 0; $i < $children->length; ++$i) {
>> $elem = $children->item($i);
>> if (!($elem instanceof DOMElement)) continue;
>> if ($elem->getAttribute('id') == $id) return $elem;
>> $ret = getElementById($doc, $id, $elem);
>> if ($ret !== NULL) return $ret;
>> }
>> return NULL;
>>}
>>
>>
>>
>非常に基本的なことで申し訳ないのですが、
>上記グローバル関数の使い方が理解できておらず、うまく処理できないのです。
>
>$doc->getElementById('title')->tagName;
>$doc->getElementById('title')->nodeValue;
>このような使い方はできるのでしょうか?
>tagNameのほうはわからないのですが、nodeValueに関しては、
>Call to undefined method DOMElement::nodeValue()
>とエラーが返ってきたので、使い方が間違っているのかもしれません。
>
>function getElementById(DOMDocument $doc, /*string*/ $id, DOMNode $node = NULL) {
>//中略
>if ($node === NULL) return getElementById($doc, $id, $doc->documentElement);
>
>引数を最低二つ取る必要があると思いますので、
>$id = "title";
>getElementById($doc, $title)としなければいけないのかなと思うのですが、
>$titles = getElementById($doc,'title');
>echo $titles->nodeValue();
>このように引数を二つ取っても、
>Call to undefined method DOMElement::nodeValue()
>と返ってきてしまいます。
>
>このグローバル関数はどのように使うのでしょうか?
>自力で解決できず申し訳ないのですが、ご助言いただければ幸いです。
>宜しくお願いします。
>
>
>増田
>
>
PHP-users メーリングリストの案内