DOM XML - Đang tải
Trong chương này, chúng ta sẽ nghiên cứu về việc tải và phân tích cú pháp XML .
Để mô tả các giao diện được cung cấp bởi API, W3C sử dụng một ngôn ngữ trừu tượng được gọi là Ngôn ngữ Định nghĩa Giao diện (IDL). Ưu điểm của việc sử dụng IDL là nhà phát triển học cách sử dụng DOM với ngôn ngữ yêu thích của họ và có thể dễ dàng chuyển sang một ngôn ngữ khác.
Điểm bất lợi là, vì nó trừu tượng, IDL không thể được sử dụng trực tiếp bởi các nhà phát triển Web. Do sự khác biệt giữa các ngôn ngữ lập trình, chúng cần có ánh xạ - hoặc ràng buộc - giữa các giao diện trừu tượng và ngôn ngữ cụ thể của chúng. DOM đã được ánh xạ tới các ngôn ngữ lập trình như Javascript, JScript, Java, C, C ++, PLSQL, Python và Perl.
Trong các phần và chương tiếp theo, chúng ta sẽ sử dụng Javascript làm ngôn ngữ lập trình để tải tệp XML.
Phân tích cú pháp
Một phân tích cú pháp là một ứng dụng phần mềm được thiết kế để phân tích một tài liệu, trong tài liệu XML án trước đây và làm điều gì đó cụ thể với các thông tin. Một số trình phân tích cú pháp dựa trên DOM được liệt kê trong bảng sau:
S. không | Trình phân tích cú pháp & Mô tả |
---|---|
1 | JAXP API Java của Sun Microsystem để phân tích cú pháp XML (JAXP) |
2 | XML4J Bộ phân tích cú pháp XML của IBM dành cho Java (XML4J) |
3 | msxml Trình phân tích cú pháp XML (msxml) của Microsoft phiên bản 2.0 được tích hợp sẵn trong Internet Explorer 5.5 |
4 | 4DOM 4DOM là trình phân tích cú pháp cho ngôn ngữ lập trình Python |
5 | XML::DOM XML :: DOM là một mô-đun Perl để thao tác các tài liệu XML bằng Perl |
6 | Xerces Apache's Xerces Java Parser |
Trong một API dựa trên cây như DOM, trình phân tích cú pháp duyệt qua tệp XML và tạo các đối tượng DOM tương ứng. Sau đó, bạn có thể duyệt qua lại cấu trúc DOM.
Tải và phân tích cú pháp XML
Trong khi tải một tài liệu XML, nội dung XML có thể có hai dạng:
- Trực tiếp dưới dạng tệp XML
- Dưới dạng chuỗi XML
Nội dung dưới dạng tệp XML
Ví dụ sau minh họa cách tải dữ liệu XML ( node.xml ) bằng Ajax và Javascript khi nội dung XML được nhận dưới dạng tệp XML. Ở đây, hàm Ajax lấy nội dung của tệp xml và lưu trữ nó trong XML DOM. Khi đối tượng DOM được tạo, nó sẽ được phân tích cú pháp.
<!DOCTYPE html>
<html>
<body>
<div>
<b>FirstName:</b> <span id = "FirstName"></span><br>
<b>LastName:</b> <span id = "LastName"></span><br>
<b>ContactNo:</b> <span id = "ContactNo"></span><br>
<b>Email:</b> <span id = "Email"></span>
</div>
<script>
//if browser supports XMLHttpRequest
if (window.XMLHttpRequest) { // Create an instance of XMLHttpRequest object.
code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp = new XMLHttpRequest();
} else { // code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
// sets and sends the request for calling "node.xml"
xmlhttp.open("GET","/dom/node.xml",false);
xmlhttp.send();
// sets and returns the content as XML DOM
xmlDoc = xmlhttp.responseXML;
//parsing the DOM object
document.getElementById("FirstName").innerHTML =
xmlDoc.getElementsByTagName("FirstName")[0].childNodes[0].nodeValue;
document.getElementById("LastName").innerHTML =
xmlDoc.getElementsByTagName("LastName")[0].childNodes[0].nodeValue;
document.getElementById("ContactNo").innerHTML =
xmlDoc.getElementsByTagName("ContactNo")[0].childNodes[0].nodeValue;
document.getElementById("Email").innerHTML =
xmlDoc.getElementsByTagName("Email")[0].childNodes[0].nodeValue;
</script>
</body>
</html>
node.xml
<Company>
<Employee category = "Technical" id = "firstelement">
<FirstName>Tanmay</FirstName>
<LastName>Patil</LastName>
<ContactNo>1234567890</ContactNo>
<Email>[email protected]</Email>
</Employee>
<Employee category = "Non-Technical">
<FirstName>Taniya</FirstName>
<LastName>Mishra</LastName>
<ContactNo>1234667898</ContactNo>
<Email>[email protected]</Email>
</Employee>
<Employee category = "Management">
<FirstName>Tanisha</FirstName>
<LastName>Sharma</LastName>
<ContactNo>1234562350</ContactNo>
<Email>[email protected]</Email>
</Employee>
</Company>
Hầu hết các chi tiết của mã đều có trong mã script.
Internet Explorer sử dụng ActiveXObject ("Microsoft.XMLHTTP") để tạo một phiên bản của đối tượng XMLHttpRequest, các trình duyệt khác sử dụng phương thức XMLHttpRequest () .
các responseXML biến nội dung XML trực tiếp trong DOM XML.
Khi nội dung XML được chuyển thành JavaScript XML DOM, bạn có thể truy cập bất kỳ phần tử XML nào bằng cách sử dụng các phương thức và thuộc tính JS DOM. Chúng tôi đã sử dụng các thuộc tính DOM như các phương thức childNodes , nodeValue và DOM như getElementsById (ID), getElementsByTagName (tags_name).
Chấp hành
Lưu tệp này dưới dạng loadingexample.html và mở tệp đó trong trình duyệt của bạn. Bạn sẽ nhận được kết quả sau:
Nội dung dưới dạng chuỗi XML
Ví dụ sau minh họa cách tải dữ liệu XML bằng Ajax và Javascript khi nội dung XML được nhận dưới dạng tệp XML. Ở đây, hàm Ajax, lấy nội dung của tệp xml và lưu trữ nó trong XML DOM. Sau khi đối tượng DOM được tạo, nó sẽ được phân tích cú pháp.
<!DOCTYPE html>
<html>
<head>
<script>
// loads the xml string in a dom object
function loadXMLString(t) { // for non IE browsers
if (window.DOMParser) {
// create an instance for xml dom object parser = new DOMParser();
xmlDoc = parser.parseFromString(t,"text/xml");
}
// code for IE
else { // create an instance for xml dom object
xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async = false;
xmlDoc.loadXML(t);
}
return xmlDoc;
}
</script>
</head>
<body>
<script>
// a variable with the string
var text = "<Employee>";
text = text+"<FirstName>Tanmay</FirstName>";
text = text+"<LastName>Patil</LastName>";
text = text+"<ContactNo>1234567890</ContactNo>";
text = text+"<Email>[email protected]</Email>";
text = text+"</Employee>";
// calls the loadXMLString() with "text" function and store the xml dom in a variable
var xmlDoc = loadXMLString(text);
//parsing the DOM object
y = xmlDoc.documentElement.childNodes;
for (i = 0;i<y.length;i++) {
document.write(y[i].childNodes[0].nodeValue);
document.write("<br>");
}
</script>
</body>
</html>
Hầu hết các chi tiết của mã đều có trong mã script.
Internet Explorer sử dụng ActiveXObject ("Microsoft.XMLDOM") để tải dữ liệu XML vào một đối tượng DOM, các trình duyệt khác sử dụng hàm DOMParser () và phương thức parseFromString (text, 'text / xml') .
Văn bản biến phải chứa một chuỗi có nội dung XML.
Khi nội dung XML được chuyển thành JavaScript XML DOM, bạn có thể truy cập bất kỳ phần tử XML nào bằng cách sử dụng các phương thức và thuộc tính JS DOM. Chúng tôi đã sử dụng các thuộc tính DOM như childNodes , nodeValue .
Chấp hành
Lưu tệp này dưới dạng loadingexample.html và mở tệp đó trong trình duyệt của bạn. Bạn sẽ thấy kết quả sau:
Bây giờ chúng ta đã thấy cách nội dung XML chuyển đổi thành JavaScript XML DOM, bây giờ bạn có thể truy cập bất kỳ phần tử XML nào bằng cách sử dụng các phương thức XML DOM.