Menu

Tuesday, June 11, 2013

[AS3] วิธีการอ่านไฟล์ XML
[AS3] How to Read XML File

ขั้นแรก สร้างไฟล์ข้อความชื่อ test.xml แล้วใส่ข้อความตามด้านล่าง
First, create XML file named test.xml and add text as below
  1. <document>
  2.   <head>Header</head>
  3.   <body>
  4.     <content>
  5.       <no>1</no>
  6.       <text>Content 1</text>
  7.     </content>
  8.     <content>
  9.       <no>2</no>
  10.       <text>Content 2</text>
  11.     </content>
  12.   </body>
  13.   <foot>Footer</foot>
  14. </document>

ต่อมา ใส่โค้ดด้านล่างนี้ในสคริปต์ของคุณ
Next, insert the code below to your script
  1. function loadXML(){
  2.      var xmlLoader:URLLoader = new URLLoader();
  3.      xmlLoader.addEventListener(Event.COMPLETE, showXML);
  4.      xmlLoader.load(new URLRequest("test.xml"));
  5. }
  6. function showXML(e:Event):void {
  7.      XML.ignoreWhitespace = true; 
  8.      var doc:XML = new XML(e.target.data);
  9.      trace(doc.head);
  10.      trace(doc.body.content.length());
  11.      for (var i:int=0; i < doc.body.content.length(); i++) {
  12.           trace("Body: "+ doc.body.content[i].text);
  13.           trace("Body: "+ doc.body.content[i].no);
  14.      }
  15.      trace(doc.foot);
  16. }

บรรทัดที่ 4, ข้อความถูกโหลดจาก test.xml
At line 4, Text is loaded from test.xml

บรรทัดที่ 8, ตัวแปร XML ถูกนิยามพร้อมกับใช้ข้อมูลที่ถูกโหลดเข้ามา
At line 8, XML variable is defined with using loaded data

บรรทัดที่ 9-15, ทำการแสดงค่าของแต่ละอีลิเมนต์
At line 9-15, The value of each element is printed

หมายเหตุ:
ใช้ doc.element_name เพื่ออ่านค่าของอีลิเมนต์ในระดับแรก เช่น doc.head
ต่อท้ายด้วย .element_name เพื่ออ่านค่าในระดับถัดไป เช่น doc.body.content
ใช้ .element_name[index] เพื่ออ่านค่าอีลิเมนต์ที่ซ้ำกัน เช่น  doc.body.content[i]
Notice
Use doc.element_name to get value of element in first level such as doc.head
Append .element_name to get value of element in next level such as doc.body.content
Use .element_name[index] to get value of element that is duplicated such as doc.body.content[i]

เรียกฟังก์ชั่น loadXML จากคอนสตรัคเตอร์ของคลาส แล้วกดปุ่ม Ctrl+Enter เพื่อรัน
Call loadXML from your class constructor then press Ctrl+Enter to run

หน้าต่าง output จะแสดงข้อความตามด้านล่าง
The output window will show text as
Header
2
Body: Content 1
Body: 1
Body: Content 2
Body: 2
Footer

หมายเหตุ: อย่าลืม import flash.net.*;
Notice: you must import flash.net.*;  

No comments:

Post a Comment