JavaScript实现XML解析与动态页面展示

作者:小括号

时间:2026-10-26

浏览:297

本文介绍如何使用JavaScript解析XML文件,提取节点属性并转换为JSON格式,进而动态生成页面目录、图片展示区及元数据表格。代码兼容IE与Firefox,通过DOMParser或ActiveXObject处理XML,实现简单的分页浏览功能。

文章目录

JavaScript实现XML解析与动态页面展示

JavaScript 客户端代码:


具体实现如下:

 
// 页面初始化逻辑
function init() {
var ary = JSONToArray(XMLReader("node","content.dibi"));
var divtoc = document.getElementById("div_toc");
pageCount = ary.length;
for(k = 0; k < ary.length; k++){
obj = eval('(' + ary[k] + ')');
divtoc.innerHTML += "<a href='javascript:changeImage(" + obj.page.substring(obj.page.length-1) + ")'>"
+ obj.label + "</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
} 
page = 1;
changeImage(page);
var pageManager = document.getElementById("div_page");
pageManager.innerHTML = "<a href='javascript:changePage(0)'>上一页</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"
+ "<a href='javascript:changePage(1)'>下一页</a><br/><br/>";
var ary2 = JSONToArray(XMLReader("meta","content.dibi"));
var divmeta = document.getElementById("div_meta");
var styStr = "<table>"
for(l = 0; l < ary2.length; l++){
obj2 = eval('(' + ary2[l] + ')');
styStr += "<tr><td>" + obj2.name + "</td><td>" + obj2.content + "</td></tr>";
} 
divmeta.innerHTML = styStr + "</table>";
} 
// 解析 .dibi 格式文件。
function XMLReader(key,fileName) {
var parse = BrowserValidator();
parse.load(fileName);
var json = "";
try{
var dom = parse.documentElement;
var attrLength = 0;
for (i = 0; i < dom.getElementsByTagName(key).length; i++) {
attrLength = dom.getElementsByTagName(key)[i].attributes.length;
objMsg = ",{";
for(j = 0; j < attrLength; j++){
objMsg += "'" + dom.getElementsByTagName(key)[i].attributes[j].name
+ "':'" + dom.getElementsByTagName(key)[i].attributes[j].value + "',";
} 
objMsg = objMsg.substring(0,objMsg.length-1);
json += objMsg + "}";
} 
json = json.substring(1);
}catch(e){}
return json;
} 
// 检测浏览器类型,兼容 IE 与 FireFox。
function BrowserValidator(){
var result;
if(!window.DOMParser && window.ActiveXObject) {
result = new ActiveXObject("Microsoft.XMLDOM");
result.async = false;
} 
} else if(document.implementation && document.implementation.createDocument) {
result = document.implementation.createDocument("", "", null);
result.async = false;
} 
return result;
} 
var page = 1; // 当前页码
var pageCount; // 总页数
// 根据点击事件更新页面图片
function changeImage(page1){
page = page1;
var divimg = document.getElementById("div_img");
divimg.innerHTML = "<img width='500' src = 'images/" + page +".jpg'/>";
} 
// 处理上一页及下一页逻辑
function changePage(flag){
if(flag == 0 && page > 1){
page--;
} 
} else if(flag == 1 && page < pageCount){
page++;
} 
changeImage(page);
} 
// 将 JSON 字符串转换为数组
function JSONToArray(json){
return json.replace(new RegExp("},", "g"), "}|").split("|");
} 

HTML 客户端代码:


具体实现如下:

 
<html>
<head>
<title></title>
<script language="javascript" type="text/javascript" charset='gbk' src="xmlhelper.js"></script>
</head>
<body onload="init()">
<div id="div_toc"></div>
<div id="div_img"></div>
<div id="div_page"></div>
<div id="div_meta"></div>
</body>
</html>

XML 数据端:略。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章