XML オブジェクトを文字列に変換するには toString() メソッドか toXMLString() メソッドを使います。どちらもほぼ同じ出力になりますが、テキストノードを出力しようとしたときだけ違う動きをします。toXMLString() ではタグ付きで出力されますが toString() の場合はコンテンツのみが出力されます。
var myOrder:XML = <order> <item id="1"> <name>fresh burger</name> </item> </order>; trace(myOrder.item[0].name.toXMLString()); // <name>fresh burger</name> が出力される trace(myOrder.item[0].name.toString());
// fresh burger が出力される
文字列変換の際、prettyIndent 属性の値を変えると字下げする文字数を変えることができます。デフォルトは2です。また、 prettyPrinting 属性によりタグ間のスペースの処理の有無を指定できます。
これらの属性の指定には setSettings() メソッドが使用できます。setSettings() は static メソッドですのでインスタンスではなくクラスオブジェクトに対して呼び出します。クラスオブジェクトの属性を直接変更することもできます。
// どちらも効果は同じ XML.setSettings({prettyIndent:0}); XML.prettyIndent = 0;
defaultSettings() メソッドを使用すると setSettings() メソッドで変更した属性をデフォルト値に戻すことができます。setSettings() を引数なしで呼び出してもデフォルト値が設定されます。
コメントと PI
デフォルトではコメントと PI は無視されますが、ignoreComments と ignoreProcessingInstructions の値を変更するとそれぞれパースの対象にできます。これらの属性はパース時に使用されるので、インスタンスの初期化後に値を変更しても効果はありません。
XML.ignoreComments = false; XML.ignoreProcessingInstructions = false; var myOrder:XML = <order> <!-- comment --> <?PI processingInstructions ?> <item id="1" quantity="1"/> </order>; trace(myOrder); // <order> // <!-- comment --> // <?PI processingInstructions ?> // <item id="1" quantity="1"/> // </order>
パースされたコメントと PI は comments() と processingInstructions() メソッドで取得できます。返り値の型は XMLList です。
trace(myOrder.comments()[0]); // <!-- comment --> trace(myOrder.processingInstructions()[0]); // <?PI processingInstructions ?>
コメントする