Khác biệt trình duyệt XML DOM
- Trang trước DOM duyệt nút
- Trang tiếp theo DOM định vị nút
Các trình duyệt xử lý các nút văn bản trống trong XML DOM khác nhau.
Mô hình
Ví dụ dưới đây sử dụng tệp XML books.xml.
Hàm loadXMLDoc()Nằm ở phần JavaScript bên ngoài, được sử dụng để tải tệp XML.
- Hiển thị độ dài danh sách các nút
- Ví dụ này hiển thị độ dài của danh sách các nút. Kết quả khác nhau giữa IE và các trình duyệt khác.
- Bỏ qua các nút trống giữa các nút
- Ví dụ này kiểm tra nodeType của nút và chỉ xử lý các nút phần tử.
Các sự khác biệt trong việc phân tích DOM của trình duyệt
Tất cả các trình duyệt hiện đại đều hỗ trợ quy định W3C DOM.
Mặc dù vậy, có sự khác biệt giữa các trình duyệt. Các điểm khác biệt quan trọng bao gồm:
- Cách tải XML
- Cách xử lý khoảng trống và dòng trống
Trong “Giải thích XML DOM”Phần này đã giải thích các cách tải XML khác nhau.
Trong phần này, chúng ta sẽ giải thích các cách xử lý khoảng trống và dòng trống khác nhau.
DOM - Khoảng trống và dòng trống
XML thường chứa các dòng trống hoặc ký tự trắng giữa các nút. Đây là một tình huống thường gặp khi sử dụng các trình chỉnh sửa đơn giản (như Notepad).
Ví dụ dưới đây (được chỉnh sửa bằng Notepad) chứa CR/LF giữa mỗi dòng và hai khoảng trống trước mỗi subnode:
<book> <title>Harry Potter</title> <author>J K. Rowling</author> <year>2005</year> <price>29.99</price> </book>
Firefox và một số trình duyệt khác sẽ xử lý khoảng trống hoặc dòng trống như các nút văn bản, trong khi Internet Explorer không làm như vậy.
Mã đoạn sau đây hiển thị số lượng nút con của phần tử gốc (của books.xml):
xmlDoc=loadXMLDoc("books.xml"); x=xmlDoc.documentElement.childNodes; document.write("Số lượng nút con: " + x.length);
Ví dụ giải thích:
- Bằng cách sử dụng loadXMLDoc() Đưa "books.xml"Đưa vào xmlDoc"
- Lấy nút con của phần tử gốc
- Output số lượng nút con
Kết quả phụ thuộc vào trình duyệt được sử dụng. Firefox output 9,而 IE output 4.
Bỏ qua các nút trống giữa các nút
Để bỏ qua các nút văn bản trống giữa các nút phần tử, cần kiểm tra loại nút. Loại nút của phần tử là 1:
xmlDoc=loadXMLDoc("books.xml"); x=xmlDoc.documentElement.childNodes; for (i=0;i<x.length;i++) { if (x[i].nodeType==1) {// chỉ xử lý các nút phần tử document.write(x[i].nodeName); document.write("<br />"); } }
Ví dụ giải thích:
- Bằng cách sử dụng loadXMLDoc() Đưa "books.xml"Đưa vào xmlDoc"
- Lấy nút con của phần tử gốc
- Kiểm tra loại nút của mỗi nút con. Nếu loại nút là "1", thì đó là nút phần tử
- Trang trước DOM duyệt nút
- Trang tiếp theo DOM định vị nút