Khác biệt trình duyệt XML DOM

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.

TIY

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ử

TIY(dễ dàng) hoặc TIY(hoàn chỉnh)