Chương 3 ActionScript
3.5. XML và E4X
3.5.1. Dữ liệu phân cấp XML
Chúng ta xem XML như là một dữ liệu phân cấp. Nếu xem dữ liệu XML như là một cây phân cấp thì trong đó những thành phần được xem là những nút (node) trên cây. Xét ví dụ (1) đoạn dữ liệu XML sau:
<SACH ISBN=”1231456”>
<TUA>Mat Ma DaVinci</TUA> <TACGIA>Dan Brown</TACGIA>
<NHA XUAT BAN>VHTT</NHA XUAT BAN> </SACH>
Các thành phần <SACH>, <TUA>, <TACGIA>, <NHA XUAT BAN> và các chuỗi “Mat Ma DaVinci”, “Dan Brown”, “VHTT” được xem là các nút (node) trên cây. Thành phần <SACH> là gốc của cây hay nút gốc của dữ liệu XML. Các nút <TUA>, <TACGIA>, <NHA XUAT BAN> là thành phần con của <SACH>. <TUA>, <TACGIA>, <NHA XUAT BAN> là các thành phần anh em của nhau. Các thành phần <TUA>, <TACGIA>, <NHA XUAT BAN> có một nút con văn bản lần lượt là “Mat Ma DaVinci”, “Dan Brown”, “VHTT”. Các nút văn bản này là nút cuối cùng trên cây.
3.5.1.1. Biểu diễn dữ liệu XML trong E4X
Trong E4X dữ liệu XML được biểu diễn bằng một trong hai kiểu dữ liệu cơ bản của AS là XML và XMLList và những lớp tương ứng của chúng cũng được đặt tên là
XML và XMLList, nếu một thành phần XML có các thành phần con (như con của <SACH> là <TUA>) hoặc có các nút con văn bản (như con của <TUA> là “Mat Ma DaVinci”) thì những thành phần con này được gói trong XMLList bởi một thể hiện của cha chúng. Các nút con của một thành phần XML ln được gói trong một XMLList, thậm chí thành phần đó chỉ có duy nhất một con. Nếu một thành phần
XML có các thuộc tính, chú thích, câu lệnh thì chúng cũng được gói trong
XMLList. Tuy nhiên chú thích và các câu lệnh theo mặc định bị loại bỏ bởi E4X. Xét lại đoạn ví dụ:
<SACH ISBN=”1231456”>
<TUA>Mat Ma DaVinci</TUA> <TACGIA>Dan Brown</TACGIA>
<NHA XUAT BAN>VHTT</NHA XUAT BAN> </SACH>
Thành phần <SACH> được giữ bởi một thể hiện của XML. Thể hiện này chứa 2 thể hiện XMLList, một cho các thuộc tính của <SACH>, cái còn lại cho các thành phần con của nó. Thành phần <SACH> có duy nhất một thuộc tính do đó XMLList cho thuộc tính <SACH> chứa duy nhất một thể hiện (ISBN). XMLList cho các thành phần con của <SACH> chứa 3 thể hiện là <TUA>, <TACGIA>, <NHA XUAT BAN>. Mỗi một thể hiện XML có một XMLList gồm duy nhất một thể hiện XML lần lượt là “Mat Ma DaVinci”, “Dan Brown”, “VHTT”.
3.5.1.2. Tạo dữ liệu XML với E4X
Để tạo một XML <SACH> trong ví dụ trên bằng E4X chúng ta có 3 cách:
1. Sử dụng hàm khởi tạo XML để tạo một thể hiện XML mới, sau đó để tạo
phần còn lại chúng ta sẽ sử dụng những kỹ thuật được trình bày ở phần sau
"Thay đổi và tạo mới nội dung XML”.
2. Sử dụng hàm khởi tạo XML để tạo một thể hiện XML mới, sau đó nhập dữ liệu từ tập tin bên ngồi, phần này được trình bày ở “Nạp dữ liệu XML”. 3. Viết dữ liệu XML trực tiếp dưới dạng văn bản, như chuỗi hoặc số. Ví dụ (2) sau sử dụng cách thứ 3 để tạo dữ liệu XML:
var tieuthuyet:XML=<SACH ISBN=”1231456”> <TUA>Mat Ma DaVinci</TUA>
<TACGIA>Dan Brown</TACGIA>
<NHA XUAT BAN>VHTT</NHA XUAT BAN> </SACH>;
AS cũng cho phép một biểu thức động được sử dụng để tạo XML. Dấu { } dùng để xác định biểu thức động trong chuỗi XML . Đoạn mã sau xác định tên của <SACH> một cách động:
var ten:String = “SACH”; var tieuthuyet:XML = <{ten}/>;