Truy cập nút XML DOM

Bằng cách sử dụng DOM, bạn có thể truy cập vào mỗi nút trong tài liệu XML.

Truy cập vào nút

Bạn có thể truy cập vào nút theo ba cách:

  • Bằng cách sử dụng phương thức getElementsByTagName()
  • Bằng cách lặp qua (duyệt qua) cây nút
  • Bằng cách sử dụng mối quan hệ giữa các nút để di chuyển trong cây nút

Phương thức getElementsByTagName()

getElementsByTagName() Trả về tất cả các phần tử có tên thẻ được chỉ định.

Cú pháp

node.getElementsByTagName("tagname");

Thực hành

Ví dụ sau trả về tất cả các phần tử <title> dưới phần tử x:

x.getElementsByTagName("title");

Lưu ý, ví dụ trên chỉ trả về các phần tử <title> dưới nút x. Để trả về tất cả các phần tử <title> trong tài liệu XML, hãy sử dụng:

xmlDoc.getElementsByTagName("title");

Ở đây,xmlDoc là chính văn bản tài liệu (nút tài liệu).

Danh sách các phần tử DOM

getElementsByTagName() 方法返回节点列表(node list)。节点列表是节点的数组。

Phương thức này trả về danh sách các node (node list). Danh sách các node là một mảng các node.

x = xmlDoc.getElementsByTagName("title");

Bạn có thể truy cập các phần tử <title> trong x thông qua số thứ tự chỉ mục. Nếu muốn truy cập phần tử thứ ba <title>, bạn có thể viết như sau:

y = x[2];Chú ý:

Thử làm ngay

Chỉ số bắt đầu từ 0.

Bạn có thể sử dụng Độ dài của danh sách các node DOM

Thuộc tính để định nghĩa độ dài của danh sách các node (số lượng node). Bạn có thể sử dụng length

Thực hành

Thuộc tính để lặp qua danh sách các node:
for (i = 0; i < x.length; i++) {
  var x = xmlDoc.getElementsByTagName("title");
  }

Thử làm ngay

// Ở đây có thể viết mã xử lý từng node

Loại node Node của tài liệu XML documentElement

Thuộc tính của node là tên của node. Thuộc tính là node gốc. nodeName

Thuộc tính của node là tên của node. nodeType Thuộc tính là loại của node.

Bạn sẽ học thêm về các thuộc tính của node trong chương tiếp theo của hướng dẫn này.

Thử làm ngay

Lặp qua các node

Mã dưới đây lặp qua các con node con của node gốc (cũng là các node element):

Thực hành

txt = "";
x = xmlDoc.documentElement.childNodes;
for (i = 0; i < x.length; i++) {
  // Chỉ xử lý các node element (loại 1)
  if (x[i].nodeType == 1) {
    txt += x[i].nodeName + "<br>";
  }
}

Thử làm ngay

Giải thích ví dụ:

  1. Giả sử bạn đã nạp "books.xml"Nạp vào xmlDoc
  2. Lấy các con node con của node gốc (xmlDoc)
  3. Kiểm tra loại của mỗi nút con. Nếu loại nút là "1" là node element
  4. Nếu là node element, thì xuất tên của node

Di chuyển qua các mối quan hệ node

Mã dưới đây sử dụng mối quan hệ giữa các node để di chuyển trong cây node:

Thực hành

x = xmlDoc.getElementsByTagName("book")[0];
xlen = x.childNodes.length;
y = x.firstChild;
txt = "";
for (i = 0; i < xlen; i++) {
  // Chỉ xử lý các node element (loại 1)
  if (y.nodeType == 1) {
    txt += y.nodeName + "<br>";
  }
  y = y.nextSibling;
}

Thử làm ngay

Giải thích ví dụ:

  1. Giả sử bạn đã nạp "books.xml"Nạp vào xmlDoc
  2. Lấy các con node con của phần tử đầu tiên của book
  3. Đặt "y" thành nút con đầu tiên của phần tử "book" đầu tiên
  4. Đối với mỗi nút con (từ nút con đầu tiên "y" bắt đầu):
  5. Kiểm tra loại của mỗi nút con. Nếu loại nút là "1" thì nó là nút phần tử
  6. Nếu là nút phần tử, thì xuất tên của nút đó
  7. Đặt "y"VARIABLE" được đặt thành nút đồng cấp tiếp theo, và chạy vòng lặp lại