[PHP-users 23011]Re: XML DOM処理で要素追加

Hitoshi Kawano kawano @ topics.or.jp
2004年 8月 18日 (水) 17:15:34 JST


河野です。
Ushiroさん、安高さんありがとうございます。

安高さんの方法を試させていただきます。結果は少々時間をください。
マニュアルは見たのですが、どの関数を使えばよいかがいまひとつ
分からなかったので、質問させていただきました。

_/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/☆彡
河野 仁(Hitoshi Kawano)
E-Mail:kawano @ topics.or.jp
_/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/

> 安高です。
>
> 単純に特定のエレメントを置き換えるなら、
> 以下のような感じでいかがでしょう。php4.3.4で確認済みです。
>
> ------------------------------------------------
> <?php
>
> //fileA(更新する側)のDOM定義
> $xmlstrA=file_get_contents("fileA.xml");
> $domA=domxml_open_mem($xmlstrA);
>
> //fileB(更新する側)のDOM定義
> $xmlstrB=file_get_contents("fileB.xml");
> $domB=domxml_open_mem($xmlstrB);
>
> //xpathコンテキストをそれぞれ定義
> $ctxA=xpath_new_context($domA);
> $ctxB=xpath_new_context($domB);
>
> //まず、fileAからEL2以下のノードを取得
> $xarrA=$ctxA->xpath_eval("/EL1/EL2");
> $xelA=$xarrA->nodeset[0];
>
> //次に、fileBからEL2以下のノードを取得
> $xarrB=$ctxB->xpath_eval("/EL1/EL2");
> $xelB=$xarrB->nodeset[0];
>
> //置換
> $xelA->replace_node($xelB);
>
> //結果確認
> echo "<PRE>";
> $xmlfile = $domA->dump_mem(true);
> echo htmlentities($xmlfile);
> echo "</PRE>";
>
> ?>
>
> ------------------------------------------------
>
> Ushiroさんがご指摘のとおり、確かにマニュアルもありますが、
> replace_node
> あたりはパラメータの説明もないので、非常にわかりにくい部分だと思います。
> phpやlibxmlのバージョン違いで動作もかなり異なるみたいですし。
>
> 私も同じようなことをやっておりますので、今後ともよろしくお願いします。



PHP-users メーリングリストの案内