XML

(サンプル一覧を表示する)

FlashDevelop を使って、XML のテストをしてみました。

Adobe の ActionScript リファレンスのページにある内容そのまんまです。
このサンプルは、trace() を使ってデバッグウインドウに内容を表示しているので
Flash の実行画面はありません。

ActionScript3 では、コード内での XML の初期化と各要素へのアクセス経路を、
大変わかりやすく記述することができます。

ソースコード

package 
{
	import flash.display.Sprite;
	import flash.events.Event;
	
	/**
	 * XML のサンプル
	 * @author Hikipuro
	 */
	public class Main extends Sprite 
	{
		/**
		 * コンストラクタ
		 */
		public function Main():void 
		{
			if (stage) init();
			else addEventListener(Event.ADDED_TO_STAGE, init);
		}
		
		/**
		 * 初期化イベント
		 * @param	e
		 */
		private function init(e:Event = null):void 
		{
			removeEventListener(Event.ADDED_TO_STAGE, init);
			// entry point
			
			xmlTest1();
			xmlTest2();
		}
		
		/**
		 * テスト 1
		 */
		private function xmlTest1():void
		{
			trace("--- xmlTest1() ---");
			
			// XML の初期化と表示テスト
			XML.ignoreComments = false;
			var xml1:XML = 
					<foo>
						<!-- comment -->
					</foo>;
			trace("--- XML.ignoreComments = false ---");
			trace(xml1.toXMLString()); // <foo><!-- comment --></foo>

			XML.ignoreComments = true;
			var xml2:XML = 
					<foo>
						<!-- example -->
					</foo>;
			trace("--- XML.ignoreComments = true ---");
			trace(xml2.toXMLString()); // <foo/>
			
			trace("\n");
		}
		
		/**
		 * テスト 2
		 */
		private function xmlTest2():void
		{
			trace("--- xmlTest2() ---");
			
			var employees:XML =
                <employees>
                    <employee ssn="123-123-1234">
                        <name first="John" last="Doe"/>
                        <address>
                            <street>11 Main St.</street>
                            <city>San Francisco</city>
                            <state>CA</state>
                            <zip>98765</zip>
                        </address>
                    </employee>
                    <employee ssn="789-789-7890">
                        <name first="Mary" last="Roe"/>
                        <address>
                            <street>99 Broad St.</street>
                            <city>Newton</city>
                            <state>MA</state>
                            <zip>01234</zip>
                        </address>
                    </employee>
                </employees>;

			trace(employees.employee[0].address.zip);   // 98765
			trace(employees.employee[1].@ssn);          // 789-789-7890
            trace(employees.employee.name);             // <name first="John" last="Doe"/>
                                                        // <name first="Mary" last="Roe"/>

            trace(employees..zip[0]);                   // 98765
            trace(employees..@ssn[1]);                  // 789-789-7890
            trace(employees..name);                     // <name first="John" last="Doe"/>
                                                        // <name first="Mary" last="Roe"/>

            trace(employees.employee[0].address.*);     // <street>11 Main St.</street>    
                                                        // <city>San Francisco</city>
                                                        // <state>CA</state>
                                                        // <zip>98765</zip>
            var node:String = "zip";
            trace(employees.employee[0].address[node]); // 98765
            
            var attribute:String = "ssn";
            trace(employees.employee[1].@[attribute]);  // 789-789-7890
            
            for each (var num:XML in employees..@ssn) {
                trace(num);                             // 123-123-1234
            }                                           // 789-789-7890
            
            var ssnToFind:String = "789-789-7890";
            trace(employees.employee.(@ssn == ssnToFind).toXMLString());
                                                        // <employee ssn="789-789-7890">
                                                        // <name first="Mary" last="Roe"/>
                                                        // <address>
                                                        // <street>99 Broad St.</street>
                                                        // <city>Newton</city>
                                                        // <state>MA</state>
                                                        // <zip>01234</zip>
                                                        // </address>
                                                        // </employee>

		}
		
	}
	
}		

出力結果

--- xmlTest1() ---
--- XML.ignoreComments = false ---
<foo>
<!-- comment -->
</foo>
--- XML.ignoreComments = true ---
<foo/>


--- xmlTest2() ---
98765
789-789-7890
<name first="John" last="Doe"/>
<name first="Mary" last="Roe"/>
98765
789-789-7890
<name first="John" last="Doe"/>
<name first="Mary" last="Roe"/>
<street>11 Main St.</street>
<city>San Francisco</city>
<state>CA</state>
<zip>98765</zip>
98765
789-789-7890
123-123-1234
789-789-7890
<employee ssn="789-789-7890">
<name first="Mary" last="Roe"/>
<address>
<street>99 Broad St.</street>
<city>Newton</city>
<state>MA</state>
<zip>01234</zip>
</address>
</employee>

外部リンク