[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 メーリングリストの案内