开发学院

您的位置:首页>教程>正文

教程正文

XML 应用程序

XML 应用程序

    本节演示由 HTML 和 JavaScript 构建的一个小型 XML 应用程序。

    XML 文档实例

    请看下面这个 XML 文档 ( "cd-catalog.xml" ),它描述了一个 CD 目录:

    <?xml version="1.0" encoding="ISO-8859-1"?>
    <CATALOG>
      <CD>
        <TITLE>Empire Burlesque</TITLE>
        <ARTIST>Bob Dylan</ARTIST>
        <COUNTRY>USA</COUNTRY>
        <COMPANY>Columbia</COMPANY>
        <PRICE>10.90</PRICE>
        <YEAR>1985</YEAR>
      </CD>
    .
    .
    ... more ...
    .


    复习:加载 XML 文档

    首先,让我们复习一下之前学习过的代码。

    为了加载 XML 文档,我们使用了与《XML 解析器》那一节中相同的代码:

    if (window.XMLHttpRequest)
      {// code for IE7+, Firefox, Chrome, Opera, Safari
      xmlhttp=new XMLHttpRequest();
      }
    else
      {// code for IE6, IE5
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
    xmlhttp.open("GET","cd-catalog.xml",false);
    xmlhttp.send();xmlDoc=xmlhttp.responseXML;

    在本代码执行后,xmlDoc 成为一个 XML DOM 对象,可由 JavaScript 访问。

    第一步:在任意 HTML 元素中显示 XML 数据

    XML 数据可以拷贝到任何有能力显示文本的 HTML 元素。

    下面这段代码从第一个 <CD> 元素中获得 XML 数据,然后在 id="showCD" 的 HTML 元素中显示数据:

    x=xmlDoc.getElementsByTagName("CD");
    i=0;
    
    function displayCD()
    {
    artist=(x[i].getElementsByTagName("ARTIST")[0].childNodes[0].nodeValue);
    title=(x[i].getElementsByTagName("TITLE")[0].childNodes[0].nodeValue);
    year=(x[i].getElementsByTagName("YEAR")[0].childNodes[0].nodeValue);
    txt="Artist: " + artist + "<br />Title: " + title + "<br />Year: "+ year;
    document.getElementById("showCD").innerHTML=txt;
    }

    HTML 的 body 元素包含一个 onload 事件属性,它的作用是在页面已经加载时调用 display() 函数。body 元素中还包含了供接受 XML 数据的 <div id='show'> 元素:

    <div id="show"></div>
    
    </body>

    本例只能显示 XML 文档中第一个 CD 元素中的数据。为了导航到数据的下一行,我们需要使用更多的代码。

    第二步:添加导航脚本

    为了向上例添加导航(功能),需要创建 next() 和 previous() 两个函数:

    function next()
    {
    if (i<x.length-1)
      {
      i++;
      displayCD();
      }
    }
    
    function previous()
    {
    if (i>0)
      {
      i--;
      displayCD();
      }
    }

    next() 函数确保已到达最后一个 CD 元素后不显示任何东西,previous () 函数确保已到达第一个 CD 元素后不显示任何东西。

    通过点击 next/previous 按钮来调用 next() 和 previous() 函数:

    <input type="button" onclick="previous()" value="previous" />
    <input type="button" onclick="next()" value="next" />


    最后:当点击 CD 时显示专辑信息

    只需要一点点创新,您就可以创建一个完整的应用程序。

    最后的例子展示如何在点击某个 CD 项目时显示专辑信息。