ECMAScript for XML (E4X)

ECMAScript = JavaScript
จริงๆแล้ว ECMAScript คือชื่อที่เป็นทางการของ JavaScript เค้านะครับ

E4X = JavaScript for XML
E4X เป็น javascript extension ที่จะเพิ่ม native XML support ทำให้การเขียน parser แบบ DOM ทำได้ง่ายๆขึ้นมากๆ นอกจากนี้ยังสามารถใช้ความสามารถของ XPath บางส่วนอีกด้วย


ลองมาดูความง่ายของมันบ้าง
เอกสาร XML

<note>
<date>2002-08-01</date>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>


สำหรับ DOM Model

 var xmlDoc;
if (window.ActiveXObject) {
//code for Internet Explorer
xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async=false;
xmlDoc.load("note.xml");
displaymessage();
}else (document.implementation && document.implementation.createDocument) {
// code for Mozilla, Firefox, etc.
xmlDoc= document.implementation.createDocument("","",null);
xmlDoc.load("note.xml");
xmlDoc.onload=displaymessage;
}
function displaymessage() {
document.write(xmlDoc.getElementsByTagName("body")[0].firstChild.nodeValue);
}

จะสังเกตว่าเขียนยาวมากๆแต่ทำงานได้น้อย

คราวนี้ตา E4X บ้าง

 var xmlDoc=new XML();
xmlDoc.load("note.xml");
document.write(xmlDoc.body);

งานเดียวกันแต่สบายกว่ากันเยอะครับ 

 

อีกตัวอย่างนะครับ

var xmldoc = 
<employees>
<employee id="0"><name>Jim</name><age>25</age></employee>
<employee id="1"><name>Joe</name><age>20</age></employee>
<employee id="2"><name>Sue</name><age>30</age></employee>
<employees/>

ต้องการ name ของ employee ที่ id เท่ากับ 0

document.write(xmldoc.employee.(@id=="0").name);

ต้องการ id ของ employee ที่ อายุเท่ากับ 30

document.write(xmldoc.employee.(age=="30").@id); 

ต้องการ employee ที่ตำแหน่ง 2 (index 1)

document.write(xmldoc.employee[1]); 

และยังมีอีกหลายๆฟังก์ชั่นที่น่าสนใจนะครับ

E4X มีใช้ที่ไหนบ้าง
1. Javascript
2. Actionscript 3

และแหล่งศึกษาเพิ่มเติมครับ
http://www.w3schools.com/e4x/default.asp
http://en.wikipedia.org/wiki/E4x