Mengurai XML DOM

kebanyakan browser mengandungi parser XML untuk membaca dan mengoperasikan XML.

parser mengubah XML kepada objek yang dapat diakses oleh JavaScript.

contoh

contoh yang disediakan oleh CodeW3C.com adalah bebas platform dan browser. Contoh ini dapat berjalan di semua browser modern.

memuat dan mengurai fail XML
memuat dan mengurai string XML

mengurai XML

semua browser modern mengandungi parser XML untuk membaca dan mengoperasikan XML.

parser membaca XML ke ingatan, dan mengubahnya menjadi objek DOM XML yang dapat diakses oleh JavaScript.

parser XML Microsoft berbeza dengan parser di browser lain. Parser Microsoft mendukung untuk memuat fail XML dan string XML (teks), sementara browser lain menggunakan parser yang berasingan. Walau bagaimanapun, semua parser mengandungi fungsi untuk melintasi pohon XML, mengakses, memasukkan dan menghapus nod.

dalam kursus ini, kami akan menjelaskan bagaimana untuk membuat skrip yang dapat berjalan di IE dan browser lain.

menggunakan parser XML Microsoft untuk memuat XML

parser XML Microsoft terdapat di dalam Internet Explorer 5 dan versi yang lebih tinggi.

下面的 JavaScript 片段把 XML 文档 (books.xml) 载入了解析器:

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

代码解释:

  • baris pertama mencipta objek dokumen XML kosong Microsoft.
  • 第二行关闭异步加载,这样可确保在文档完整加载之前,解析器不会继续执行脚本
  • 第三行告知解析器加载名为 "books.xml" 的文档

下面的 JavaScript 片段把名为 txt 的字符串载入解析器中:

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

Keterangan:loadXML() method digunakan untuk memuat string (teks), dan load() untuk memuat fail.

在 Firefox 及其他浏览器中的 XML 解析器

下面的 JavaScript 片段把 XML 文档 (books.xml) 载入了解析器:

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

代码解释:

  • 第一行创建空的 XML 文档对象
  • 第二行关闭异步加载,这样可确保在文档完整加载之前,解析器不会继续执行脚本
  • 第三行告知解析器加载名为 "books.xml" 的文档

下面的 JavaScript 片段把名为 txt 的字符串载入解析器中:

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

代码解释:

  • 第一行创建一个空的 XML 文档对象
  • 第二行告知解析器加载名为 txt 的字符串

Keterangan:Internet Explorer 使用 loadXML() 方法来解析 XML 字符串,而其他浏览器使用 DOMParser 对象。

解析 XML 文件 - 一个跨浏览器的实例

下面的例子把 XML 文档 (books.xml) 载入 XML 解析器:

<html>
<body>
<script type="text/javascript">
try //Internet Explorer
  {
  xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
  }
catch(e)
  {
  try //Firefox, Mozilla, Opera, dll.
    {
    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

Error: Access Across Domains

出于安全方面的原因,现代的浏览器不允许跨域的访问。

这意味着,网页以及它试图加载的 XML 文件,都必须位于相同的服务器上。

CodeW3C.com 的实例所打开的 XML 文件位于 CodeW3C.com 的域上。

假如你打算在自己的网页上使用上面的例子,则必须把 XML 文件放到自己的服务器上。否则,xmlDoc.load() 将产生错误 "Access is denied"。

解析 XML 字符串 - 一个跨浏览器的实例

下面的代码加载并解析了一个 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, dll.
    {
    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

Keterangan:Internet Explorer menggunakan kaedah loadXML() untuk menghuraikan string XML, manakala pelayar lain menggunakan Objek DOMParser.