Giải nén XML DOM

Hầu hết các trình duyệt đều tích hợp bộ phân tích XML để đọc và xử lý XML.

Bộ phân tích chuyển đổi XML thành đối tượng có thể truy cập được bởi JavaScript.

Ví dụ

Các ví dụ do CodeW3C.com cung cấp là độc lập với trình duyệt và nền tảng. Các ví dụ này có thể chạy trong tất cả các trình duyệt hiện đại.

Tải và phân tích tệp XML
Tải và phân tích chuỗi XML

Phân tích XML

Tất cả các trình duyệt hiện đại đều tích hợp bộ phân tích XML để đọc và xử lý XML.

Bộ phân tích đọc XML vào bộ nhớ và chuyển đổi nó thành đối tượng XML DOM có thể được JavaScript truy cập.

Bộ phân tích XML của微软 khác biệt với bộ phân tích của các trình duyệt khác. Bộ phân tích của微软 hỗ trợ tải tệp XML và chuỗi XML (text), trong khi các trình duyệt khác sử dụng bộ phân tích riêng. Tuy nhiên, tất cả các bộ phân tích đều chứa các hàm để duyệt cây XML, truy cập, chèn và xóa các nút.

Trong hướng dẫn này, chúng tôi sẽ giải thích cách tạo các đoạn mã có thể chạy trong IE và các trình duyệt khác.

Tải XML thông qua bộ phân tích XML của微软

Bộ phân tích XML của微软 được tích hợp trong Internet Explorer 5 và các phiên bản cao hơn.

Mã JavaScript dưới đây tải tài liệu XML ("books.xml) đã tải vào bộ giải mã:

xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async="false";
xmlDoc.load("books.xml");

Giải thích mã:

  • Đường đầu tiên tạo đối tượng微软 XML trống.
  • đoạn thứ hai tắt tải đồng bộ, để đảm bảo rằng bộ giải mã sẽ không tiếp tục thực thi vở kịch trước khi tài liệu được tải hoàn chỉnh
  • đoạn thứ ba thông báo cho bộ giải mã tải tài liệu có tên là "books.xml"

Mã JavaScript dưới đây tải chuỗi có tên là txt vào bộ giải mã:

xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async="false";
xmlDoc.loadXML(txt);

Ghi chú:loadXML() phương pháp được sử dụng để tải chuỗi (text), và load() Được sử dụng để tải tệp.

Bộ giải mã XML trong Firefox và các trình duyệt khác

Mã JavaScript dưới đây tải tài liệu XML ("books.xml) đã tải vào bộ giải mã:

xmlDoc=document.implementation.createDocument("","",null);
xmlDoc.async="false";
xmlDoc.load("books.xml");

Giải thích mã:

  • đoạn thứ nhất tạo ra đối tượng XML document trống
  • đoạn thứ hai tắt tải đồng bộ, để đảm bảo rằng bộ giải mã sẽ không tiếp tục thực thi vở kịch trước khi tài liệu được tải hoàn chỉnh
  • đoạn thứ ba thông báo cho bộ giải mã tải tài liệu có tên là "books.xml"

Mã JavaScript dưới đây tải chuỗi có tên là txt vào bộ giải mã:

parser=new DOMParser();
xmlDoc=parser.parseFromString(txt,"text/xml");

Giải thích mã:

  • đoạn thứ nhất tạo ra một đối tượng XML document trống
  • đoạn thứ hai thông báo cho bộ giải mã tải chuỗi có tên là txt

Ghi chú:Internet Explorer sử dụng loadXML() phương pháp để phân tích chuỗi XML, trong khi các trình duyệt khác sử dụng DOMParser đối tượng.

Phân tích tệp XML - một ví dụ qua nhiều trình duyệt

Ví dụ dưới đây tải và phân tích tài liệu XML ("books.xml) Tải vào bộ giải mã XML:

<html>
<body>
<script type="text/javascript">
try //Internet Explorer
  {
  xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
  }
catch(e)
  {
  try //Firefox, Mozilla, Opera, v.v.
    {
    xmlDoc=document.implementation.createDocument("","",null);
    }
  catch(e) {alert(e.message)}
  }
try 
  {
  xmlDoc.async=false;
  xmlDoc.load("books.xml");
  document.write("xmlDoc is loaded, ready for use");
  }
catch(e) {alert(e.message)}
</script>
</body>
</html>

TIY

Lỗi: Access Across Domains

Do lý do an toàn, trình duyệt hiện đại không cho phép truy cập qua domain.

Điều này có nghĩa là trang web và tệp XML mà nó cố gắng tải phải nằm trên cùng một máy chủ.

Tệp XML mà ví dụ trên CodeW3C.com mở ra nằm trên域 CodeW3C.com.

Nếu bạn dự định sử dụng ví dụ trên trong trang web của mình, bạn phải đặt tệp XML trên máy chủ của mình. Không thì xmlDoc.load() sẽ tạo ra lỗi "Access is denied".

Phân tích chuỗi XML - một ví dụ qua nhiều trình duyệt

Mã dưới đây tải và phân tích một chuỗi XML:

<html>
<body>
<script type="text/javascript">
text="<bookstore>"
text=text+"<book>";
text=text+"<title>Harry Potter</title>";
text=text+"<author>J K. Rowling</author>";
text=text+"<year>2005</year>";
text=text+"</book>";
text=text+"</bookstore>";
try //Internet Explorer
  {
  xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
  xmlDoc.async="false";
  xmlDoc.loadXML(text);
  }
catch(e)
  {
  try //Firefox, Mozilla, Opera, v.v.
    {
    parser=new DOMParser();
    xmlDoc=parser.parseFromString(text,"text/xml");
    }
  catch(e) {alert(e.message)}
  }
document.write("xmlDoc is loaded, ready for use");
</script>
</body>
</html>

TIY

Ghi chú:Internet Explorer sử dụng phương thức loadXML() để phân tích chuỗi XML, trong khi các trình duyệt khác sử dụng Đối tượng DOMParser.