最近こつこつ進めているPHPプログラム。
XMLを利用するのですが、ノードの切り貼りしなくちゃいけないんですよね。
まだやり始めたばかりだったので、新しくノード作ってそこにコピー元のノードから取り出したデータを入れ直すという凄く面倒な事やっていたんですよ。
何か楽な方法無いかなぁと思っていたらcloneNodeってのがあるわけですよ。
これ使えばいいじゃん! と思ったのですが、こいつがなかなか上手くいかないと。
使い方がワカランのですよw
ふつーにコピー元のノードをcloneNodeでコピーするという形ではないんですよね。
まずコピー元のノードを取得します
$copy = $xpath->query(“/root/data”);
んでクローンノードを作る
$clone = $copy->cloneNode(true);←確か中身もコピーするんだったらtrueにするんだったきがす。
ここからが分からなかった部分。
新しいコピーノードを作る(コピー先の準備)
コピー先にクローンを作ったノードをぶっ込む準備をしてやるわけです。それがimportNode 他からモッテキタノードをインポートするって感じじゃねーかと私は理解したw
$copytmp = $doc->importNode($clone,true);
んで、コピー先のいれたいノードにappendChildしてやりゃ良い訳ですよ。
$コピー先ノード->appendChild($copytmp);
これでXMLのノードをコピーするのがラクラクに。良かった良かった。
まー。こんな情報役に立つかしらんが一応載せておこうw