Phân tích trực tiếp toàn bộ dữ liệu XML

Một phần của tài liệu Tài liệu giảng dạy môn chuyên đề công nghệ XML và ứng dụng (Trang 84 - 87)

Ở các phần trên, chúng ta mới rút trích một phần của dữ liệu trong tài liệu XML. Chúng ta có thể duyệt từ đầu đến cuối cây tài liệu bằng thủ tục đệ quy. Thủ tục

JavaScript sau mang tên iterateChildren() có khả năng đệ quy phân tích in ra toàn bộ nội dung dữ liệu XML. Khi duyệt đến một nút, ta gọi childNodes để lấy danh sách các nút con (nếu có). Ngoài ra, chúng ta có thể kiểm tra một nút có bao gồm nút con hay không bằng cách dựa vào thuộc tính length.

Ví dụ: <HTML> <HEAD> <TITLE> Prasing an XML Document </TITLE> <XML ID = “meetingsXML” SRC = “meetings.xml”> </XML> <SCRIPT LANGUAGE = “JavaScript”>

. . .

Function interateChildren (theNode, indentSpacing) {

//canh lề khi kết xuất phần tử ra tài liệu đích

var text = indentSpacing + theNode.nodeName + “<BR>”

if (theNode.childNodes.lenght > 0) {

for (var loopIndex = 0; loopIndex < theNode.childNodes.length; loopIndex ++){

//đệ quy duyệt tiếp xuống các phần tử con

text +=interateChildren (

theNode.childNodes(loopIndex), indentSpacing + “&nbsp; &nbsp;

&nbsp; &nbsp;”) } } return text } </SCRIPT> </HEAD> </HTML>

Để gọi thủ tục iterateChildren() chúng ta cài đặt thêm hàm parseDocument() để hoàn chỉnh cho tài liệu.

<TITLE>

Prasing an XML Document </TITLE>

<XML ID = “meetingsXML” SRC = “meetings.xml”> </XML> <SCRIPT LANGUAGE = “JavaScript”>

Function parseDocument () {

documentXML = document.all (“meetingsXML”). XMLDocument resultsDIV.innerHTML = interateChildren (documentXML,” “)

}

Function interateChildren (theNode, indentSpacing) {

//canh lề khi kết xuất phần tử ra tài liệu đích

var text = indentSpacing + theNode.nodeName + “<BR>” if (theNode.childNodes.lenght > 0) {

for (var loopIndex = 0; loopIndex < theNode.childNodes.length; loopIndex ++){

//đệ quy duyệt tiếp xuống các phần tử con

text +=interateChildren (

theNode.childNodes(loopIndex), indentSpacing + “&nbsp; &nbsp; &nbsp; &nbsp;”) } } return text } </SCRIPT> </HEAD> <BODY> <CENTER> <H1> Parsing an XML Document </H1> </CENTER> <CENTER>

<INPUT TYPE = “BUTTON”

VALUE = “Parse and display the document” ONCLICK = “parseDocument()”>

<CENTER>

<DIV ID = “resultDIV”></DIV>

</BODY> </HTML>

Khi chạy trên trình duyệt, chỉ in ra tên của các phần tử (nodeName), đối với các nút chứa dữ liệu text, chúng ta chưa rút trích nội dung dữ liệu khi đó chúng sẽ được biểu diễn bằng #text, các phần tử như chỉ thị xử lý được đại diện bằng ký hiệu #document.

Một phần của tài liệu Tài liệu giảng dạy môn chuyên đề công nghệ XML và ứng dụng (Trang 84 - 87)