XML DOM - Truy cập các nút
Với DOM, bạn có thể truy cập mọi nút trong tài liệu XML.
Truy cập các nút
Bạn có thể truy cập một 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 điều hướng cây nút, sử dụng các mối quan hệ 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 ");
Ví dụ
Ví dụ sau trả về tất cả phần tử <title> bên dưới phần tử x:
x.getElementsByTagName("title");
Lưu ý rằng ví dụ trên chỉ trả về phần tử <title> bên dưới nút x. Để trả về tất cả phần tử <title> trong tài liệu XML, hãy sử dụng:
xmlDoc.getElementsByTagName("title");
trong đó xmlDoc chính là tài liệu (nút tài liệu).
Danh sách nút DOM
Phương thức getElementsByTagName() trả về danh sách nút. Danh sách nút là một mảng các nút.
x = xmlDoc.getElementsByTagName("title");
Các phần tử <title> trong x có thể được truy cập bằng số chỉ mục. Để truy cập <title> thứ ba, bạn có thể viết::
y = x[2];
Lưu ý: Chỉ số bắt đầu từ 0.
Độ dài danh sách nút DOM
Thuộc tính độ dài xác định độ dài của danh sách nút (số lượng nút).
Bạn có thể lặp qua danh sách nút bằng cách sử dụng thuộc tính độ dài:
Ví dụ
var
x = xmlDoc.getElementsByTagName("title");
for (i = 0; i <x.length; i++) {
//
do something for each node
}
Hãy tự mình thử »Các loại nút
Thuộc tính documentElement của tài liệu XML là nút gốc.
Thuộc tính nodeName của một nút là tên của nút đó.
Thuộc tính nodeType của một nút là loại nút đó.
Bạn sẽ tìm hiểu thêm về các thuộc tính nút trong chương tiếp theo của hướng dẫn này.
Nút di chuyển ngang
Đoạn mã sau lặp qua các nút con, cũng là các nút phần tử, của nút gốc:
Ví dụ
txt = "";
x = xmlDoc.documentElement.childNodes;
for (i = 0; i <x.length; i++)
{
// Process only element nodes (type 1)
if (x[i].nodeType == 1) {
txt += x[i].nodeName + "<br>";
}
}
Hãy tự mình thử »Ví dụ giải thích:
- Giả sử bạn đã tải " books.xml " vào xmlDoc
- Lấy các nút con của phần tử gốc (xmlDoc)
- Đối với mỗi nút con, hãy kiểm tra loại nút. Nếu loại nút là "1" thì đó là nút phần tử
- Xuất tên của nút nếu nó là nút phần tử
Điều hướng các mối quan hệ nút
Đoạn mã sau điều hướng cây nút bằng cách sử dụng các mối quan hệ nút:
Ví dụ
x = xmlDoc.getElementsByTagName("book")[0];
xlen = x.childNodes.length;
y = x.firstChild;
txt = "";
for (i = 0; i <xlen; i++)
{
// Process only element nodes (type 1)
if (y.nodeType == 1) {
txt += y.nodeName + "<br>";
}
y = y.nextSibling;
}
Hãy tự mình thử »Ví dụ giải thích:
- Giả sử bạn đã tải " books.xml " vào xmlDoc
- Lấy các nút con của phần tử sách đầu tiên
- Đặt biến "y" làm nút con đầu tiên của phần tử sách đầu tiên
- Đối với mỗi nút con (bắt đầu bằng nút con đầu tiên "y"):
- Kiểm tra loại nút. Nếu loại nút là "1" thì đó là nút phần tử
- Xuất tên của nút nếu nó là nút phần tử
- Đặt biến "y" làm nút anh chị em tiếp theo và chạy lại vòng lặp