Nội dung chính
DOM trong XML
Document Object Model (DOM) là nền tảng của XML. Các tài liệu XML có một cấu trúc thứ bậc của các đơn vị thông tin được gọi là node; DOM là một cách để mô tả các node của nó và mối quan hệ giữa chúng với nhau.
Một tài liệu DOM là một tập hợp gồm các node hoặc các phần thông tin được tổ chức trong một cấu trúc có thứ bậc. Cấu trúc này cho phép một lập trình viên điều hướng qua cấu trúc cây để tìm kiếm thông tin cụ thể. Bởi vì, nó được dựa trên một cấu trúc thông tin có thứ bậc, DOM được xem như là Tree Based.
Nói cách khác, XML DOM cũng cung cấp một API mà cho phép một lập trình viên để thêm, chỉnh sửa, di chuyển, hoặc xóa các node trong cây XML tại bất kỳ điểm nào để tạo một ứng dụng.
Ví dụ XML Dom
Ví dụ sau (sample.htm) phân tích cú pháp một tài liệu XML (address.xml) vào trong một đối tượng XML DOM và sau đó rút một số thông tin từ đó với JavaScript:
<!DOCTYPE html> <html> <body> <h1> DOM example </h1> <div> <b>Name:</b> <span id="name"></span><br> <b>Company:</b> <span id="company"></span><br> <b>Phone:</b> <span id="phone"></span> </div> <script> if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp = new XMLHttpRequest(); } else {// code for IE6, IE5 xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.open("GET","/xml/address.xml",false); xmlhttp.send(); xmlDoc=xmlhttp.responseXML; document.getElementById("name").innerHTML= xmlDoc.getElementsByTagName("name")[0].childNodes[0].nodeValue; document.getElementById("company").innerHTML= xmlDoc.getElementsByTagName("company")[0].childNodes[0].nodeValue; document.getElementById("phone").innerHTML= xmlDoc.getElementsByTagName("phone")[0].childNodes[0].nodeValue; </script> </body> </html>
Nội dung của address.xml là:
<?xml version="1.0"?> <contact-info> <name>Vinh Phan</name> <company>KienThucLapTrinh</company> <phone>(84) 123-4567</phone> </contact-info>
Bây giờ, giữ hai file là sample.htm và address.xml trong cùng thư mục /xml và thực thi sample.htm bằng việc mở nó trong bất cứ trình duyệt nào. Nó sẽ cho kết quả:
Ở đây, bạn có thể thấy cách các node con được rút ra để hiển thị các giá trị của chúng.