simpleXML関数でダイレクトにXMLのある要素にアクセスをして、その要素の内容によってはその要素を削除したい(addChildの逆)と思っています。
simpleXML関数自体には要素を削除するメソッドがないようなのでDOMなどで代わりに処理をする必要があるかと思っています。
となると最初からDOMを使うべきだという結論になりそうなのですが、実際はどうなのでしょうか?
できればsimpleXML関数を使いたいと思っています。
具体的には以下の操作を実現したいと思っています。
・雛形のXMLがある。
・外から受け取った情報を雛形のXMLの各要素に入力していく(要素Aにはa、要素Bにはb)。
・外から受け取った情報に雛形のXMLの要素に入力するデータがなかった場合はその要素を削除(要素Cはあるけれども外からcを受け取っていないので要素Cごと削除)
・完成したXMLを出力。
以上よろしくお願いします。
<?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のよさのような気がします。
まさにこれです!
ありがとうございます!
unsetというものがあるんですね。
勉強になりました!