首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训
    图书品种:235680
       
热门搜索: ASP.NET Ajax Spring Hibernate Java

4.5.5  使用DOM操作XML文档

在数据表示方面,XML文档更加结构化。DOM在支持HTML的基础上提供了一系列的API,支持针对XML的访问和操作。利用这些API,可以从XML中提取信息,动态地创建这些信息的HTML呈现文档。处理XML文档,通常遵循“加载XML文档→提取信息→加工信息→创建HTML文档”的过程。例程4-23演示了如何加载并处理XML文档。

这个例子包含两个JS函数。loadXML()负责加载XML文档,其中既包含加载XML文档的2DOM代码,又有实现同样操作的Microsoft专用API代码。需要注意的是:文档加载过程不是瞬间完成的,所以对loadXML()的调用将在加载文档完成之前返回。因此,须要传递给loadXML()一个引用,以便文档加载完成后调用,代码如例程4-23示。

例子中的另外一个函数makeTable(),则在XML文档加载完毕之后,使用前面介绍过的DOM应用编程接口读取XML文档信息,并利用这些信息形成一个新的table表格,其代码如例程4-24所示。

例程4-23  sample4_19.htm

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

<title> Ch04--加载XML文档</title>

<script language="javascript">

function loadXML(handler) {

     var url = "employees.xml";

     if(document.implementation&&document.implementation.create Document) {

          var xmldoc = document.implementation.createDocument("", "", null);

          xmldoc.onload =  handler(xmldoc, url);

          xmldoc.load(url);

     }

     else if(window.ActiveXObject) {

          var xmldoc = new ActiveXObject("Microsoft.XMLDOM");

          xmldoc.onreadystatechange = function() {

              if(xmldoc.readyState == 4) handler(xmldoc, url);

          }

          xmldoc.load(url);

     }

}

function makeTable(xmldoc, url) {

     var table = document.createElement("table");

     table.setAttribute("border","1");

     table.setAttribute("width","600");

     table.setAttribute("class","tab-content");

     document.body.appendChild(table);

     var caption = "Employee Data from " + url;

     table.createCaption().appendChild(document.createTextNode (caption));

     var header = table.createTHead();

     var headerrow = header.insertRow(0);

     headerrow.insertCell(0).appendChild(document.createTextNode("姓名"));

     headerrow.insertCell(1).appendChild(document.createTextNode("职业"));

     headerrow.insertCell(2).appendChild(document.createTextNode("工资"));

     var employees = xmldoc.getElementsByTagName("employee");

     for(var i=0;i<employees.length;i++) {

          var e = employees[i];

          var name = e.getAttribute("name");

          var job = e.getElementsByTagName("job")[0].firstChild.data;

          var salary = e.getElementsByTagName("salary")[0].firstChild. data;

          var row = table.insertRow(i+1);

          row.insertCell(0).appendChild(document.createTextNode (name));

          row.insertCell(1).appendChild(document.createTextNode (job));

          row.insertCell(2).appendChild(document.createTextNode (salary));

     }

}

</script>

<link href="css/style.css" rel="stylesheet" type="text/css">

</head>

 

<body onLoad="loadXML(makeTable)">

</body>

</html>

例程4-24  供读取调用的XML文档 – employees.xml

<?xml version="1.0" encoding="gb2312"?>

<employees>

    <employee name="J.Doe">

        <job>Programmer</job>

        <salary>32768</salary>

    </employee>

    <employee name="A.Baker">

        <job>Sales</job>

        <salary>70000</salary>

    </employee>

    <employee name="Big Cheese">

        <job>CEO</job>

        <salary>100000</salary>

    </employee>

</employees>

4-22展示了例程4-23的执行结果。

4-22  读取XML文档的内容

查看所有评论(0)条】

最近评论



正在载入评论列表...
热点评论