PHP5のsimpleXML関数についての質問です。


simpleXML関数でダイレクトにXMLのある要素にアクセスをして、その要素の内容によってはその要素を削除したい(addChildの逆)と思っています。
simpleXML関数自体には要素を削除するメソッドがないようなのでDOMなどで代わりに処理をする必要があるかと思っています。
となると最初からDOMを使うべきだという結論になりそうなのですが、実際はどうなのでしょうか?
できればsimpleXML関数を使いたいと思っています。

具体的には以下の操作を実現したいと思っています。
・雛形のXMLがある。
・外から受け取った情報を雛形のXMLの各要素に入力していく(要素Aにはa、要素Bにはb)。
・外から受け取った情報に雛形のXMLの要素に入力するデータがなかった場合はその要素を削除(要素Cはあるけれども外からcを受け取っていないので要素Cごと削除)
・完成したXMLを出力。

以上よろしくお願いします。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2007/04/18 18:07:38
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答1件)

id:kidd-number5 No.1

回答回数117ベストアンサー獲得回数15

ポイント60pt
<?php
$xmlstr = <<<XML
<?xml version='1.0' standalone='yes'?>
<root>
<child>
<node>aaaa</node>
<node>bbbb</node>
</child>
</root>
XML;

$xml = new SimpleXMLElement($xmlstr);
unset($xml->child->node[0]);

//echo $xml->asXML();
?> 

ノードの削除は上のような方法でどうでしょう?

要は変数のように扱ってしまうことができるのがsimpleXMLのよさのような気がします。

id:k1LoW

まさにこれです!

ありがとうございます!

unsetというものがあるんですね。

勉強になりました!

2007/04/18 18:07:23
  • id:k1LoW
    大変申し訳ありません。
    あまりに的を得た回答を得て興奮してしまい、つい「いるか賞」のチェックを入れるのを忘れていました。
    すみませんでした。
  • id:kidd-number5
    あ、ちょっと期待しちゃってました(笑)

    実はSimpleXMLははじめて使ってみたので(ぉぃ
    かまいませんよ

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません