[PHP-users 18689]Re: XMLDOMでのエレメントの削除のしかた
mkomura @ eadvisor.co.jp
mkomura @ eadvisor.co.jp
2003年 10月 30日 (木) 11:08:26 JST
甲村です。
玉川様ご説明ありがとうございます。
調べた結果は
DOMElementでした。
説明でルートのノードを返すとあるdocument_element()で取得した
オブジェクトもDOMElementでした。
nodeが祖先だと考えるとelementでもnodeのメソッドが使えると感じるのですが
そうではないみたいですね。
実際にnode_childs()などで取得したオブジェクトを調べると domtextとかなる場合
が
あるのでこれが祖先のテキストなのですね。
それに従って関数一覧を調べてみるとelementを削除する関数が見当たらないので
すが何故だろう?と・
たとえば下記のようにitemを削除したいのです。
<body>
<items>
<item/>
<item> <-このタグ以下を削除
<a/>
<b>
</b>
</item> <-ここまで
<item/>
</items>
</body>
elementがnodeの子孫であれば、elementを表すタグのnodeが取得できれば
remove_nodeで削除できると思うのですが・・もう少し調べてみます。
ありがとうございました。
> -----Original Message-----
> From: tamagawa [mailto:tamagawa @ skygroup.jp]
> Sent: Wednesday, October 29, 2003 8:42 PM
> To: PHP-users ML
> Subject: [PHP-users 18683] Re: XMLDOMでのエレメントの削除のしかた
>
>
> 玉川と申します。
>
> nodeはXMLを構成する要素全般の祖先となるクラス、
> elementはnodeの子孫でいわゆるタグをあらわすもの
> と考えていいと思います。
>
> ちょっとはまりそうなのが、XMLをDOMに変換したとき、
> タグの後の改行や、それに続く行頭のスペースやタブ
> があるばあい、それらは独立したtext nodeとして
> 扱われることです。つまり、
>
> <foo>
> <foo2>
> </foo>
>
> をDOMに変換した場合、<foo>と<foo2>に加えて、<foo>と
> <foo2>の間の改行+空白、そして<foo2>と</foo>の間の改行
> もひとつのnodeになるわけです。
>
> この場合、<foo>の次にくる<foo2>を操作しているつもり
> なのに実は単なるtext node(しかも空白に見える)を
> 操作していることになってしまいます。
>
> まずはget_class関数を使って、操作しようとしている要素の
> クラスが何かを確認してみてはいかがでしょう?
> --
> 玉川竜司
>
> mkomura @ eadvisor.co.jp wrote:
>
> > はじめまして 甲村と申します。
> >
> > 現在PHP4.3.3にてXMLDOMを使って設定ファイルを作成し操作
> > するプログラムを作っているのですが、既存ファイルに新たにエレメント
> > の追加は出来るのですが、既存のエレメントの削除が出来ません。
> >
> > エレメントとノードの違いが良く理解できていないのですが
> > DOMElementオブジェクトにremove_child(obj)などメソッドを指定すると
> > メソッドがありませんとのエラーが出てしまいます。
> > DOMNodeのメソッドなのは判っているのですが、DOMNodeの取り出し方が
> > 判りません。
> >
> > どのようにNodeを取得し削除すれば良いのでしょうか?
> >
> > ご教授願えれば幸いです。
> > よろしくお願いいたします。
> >
> >
> > <!--
> > 甲村 護
> > -->
> > _______________________________________________
> > PHP-users mailing list
> > PHP-users @ php.gr.jp http://ns1.php.gr.jp/mailman/listinfo/php-users
> >
>
>
> _______________________________________________
> PHP-users mailing list
> PHP-users @ php.gr.jp http://ns1.php.gr.jp/mailman/listinfo/php-users
>
PHP-users メーリングリストの案内