2011-07-25 16 views
3

私は、既存のFlashアプリケーションのXMLでエラーを出力するための単純なラッパー関数を作成しようとしています。私はすでにSimpleXMLElementが必ずしも新しいXML文書を作成することを意図しているとは読んでいませんが、これまでのところ私にとってうまくいきました。そして、私は基本的に連結文字列を置き換えています。ルートSimpleXML要素のテキストを変更

今まで私は、私は私の出力は次のようになり見たいのですが、この例ではなど何の問題attribuesを修正/反復と追加して、値を持っていませんしました:

<ERROR>There is an error</ERROR> 

しかし、私はこれを見ています:ここでは

<ERROR> 
    <ERROR>There is an error</ERROR> 
</ERROR> 

はコードです:

​​

を使用しているようです3210構文は子ノードを作成します。私がSimpleXMLElementをインスタンス化できる唯一の方法は、親ノードを渡すことです。

答えて

5

結果は期待されます。 $sxmlはルートノードです(例: <ERROR/> - オブジェクト演算子を使用すると、子要素(存在する場合)に移動するか、その名前の新しい要素を追加します(存在しない場合)。ルートERRORノードの下にはERROR要素がないので、追加されます。

アクセス代わりにインデックスでルートノード:

$msg = 'There is an error'; 
$xmlstr = "<ERROR></ERROR>"; 
$sxml = new SimpleXMLElement($xmlstr); 
$sxmlErr = $sxml[0] = $msg; 
echo $sxml->asXML(); 

そのルート要素の罠に落ちないことをお勧めは、例えば、それを保持する変数名としてルート要素の名前を使用することです

$error = new SimpleXMLElement('<ERROR/>'); 
$error[0] = 'There is an Error'; 
echo $error->asXML(); 

またゴードンA simple program to CRUD node and node values of xml file

+1

感謝を参照してください!これは完璧です! – kenitech

関連する問題