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