通行证: 用户 密码 域名空间  下载中心 社区论坛 信息公告 MY小屋
联系我们
设为首页
加入收藏

 

QQ,ASP,PHP,JSP,XML,SQL,.Net,编程 程序 网页图象 建站经验 私服
首页 | 新闻资讯 | 编程开发 | 网页设计 | 图形图象 | 网络媒体 | 网站模板 | 数 据 库 | 投稿
论坛 | 操作系统 | 系统优化 | 网络安全 | 黑客技术 | 硬件学堂 | 硬件报价 | 服 务 器 | 地图
专题 | 应用软件 | 聊天通讯 | Q Q 专栏 | 建站经验 | 在线工具 | 站长Club | 注 册 表 | 旧版
社会 | 游戏娱乐 | 设计欣赏 | 疑难解答 | 社区论坛 | 韩国素材 | 素材图库 | 广告服务 | 服务
当前位置:首页>>编程开发>>XML专区>>正文 新版上线![旧版]
注:打开慢时请稍等

浏览整个XML文件

http://www.iyit.net  日期:2006-5-24 12:03:36  来源:整理转载   点击:
参加讨论】    在接下来的练习中,你将建立一份HTML 网页,内含可以浏览代表整个XML 文件节点的DOM阶层架构的script,由根Document 元素开始。对于每个节点,script 会显示节点的名称、形态和节点值。Script 程序会将每节点的信息区块缩排,依照节点在阶层结构中的层级来排列。你可以使用此网页来显示代表任何XML 文件的节点,和学习到更多有关DOM 如何以节点来将不同形态的XML 文件与文件组件结构化。

建立浏览节点的网页

    1. 在文字编辑器中, 开启 一份新的、空白的文本文件,然后输入显示于列表9-9 中的HTML 网页内容。(你可以在随书光盘的 ShowNodes.htm 档案中找到。)
    2. 利用文字编辑器的 存盘 指令,将文件储存于本机硬盘中,文件名为 ShowNodes.htm :
ShowNodes.htm
<!--File Name:ShowNodes.htm -->
<HTML>
<HEAD>
<TITLE>Show DOM Nodes</TITLE>
<SCRIPT LANGUAGE="JavaScript" FOR="window"
EVENT="ONLOAD">
/*get Document node:*/
Document =dsoXML.XMLDocument;
/*start by passing the Document node to
DisplayNodes:*/
DisplayDIV.innerText
=DisplayNodes(Document,0);
function DisplayNodes (Node,IndentLevel)
{
/*declare local variables for
recursion:*/
var i;
var DisplayString ="";
/*build up the indentation for this
level:*/
Indent ="";
IndentDelta =" ";
for (i=0;i <IndentLevel;++i)
Indent +=IndentDelta;
/*display the current node 's
properties:*/
DisplayString +=Indent +"nodeName:"
+Node.nodeName +"\n"
+Indent
+"nodeTypeType:"
+Node.nodeType +"\n"
+Indent
+"nodeTypeString:"
+Node.nodeTypeString
+"\n"
+Indent +"nodeValue:"
+Node.nodeValue +"\n
\n";
/*display each of the node 's attribute
child nodes:*/
Indent +=IndentDelta;
for (i=0;
Node.attributes !=null
&&i <Node.attributes.length;
++i)
DisplayString +=Indent +"nodeName:"
+Node.attributes(i).nodeName +"\n"
+Indent
+"nodeTypeType:"
+Node.attributes(i).nodeType +"\n"
+Indent
+"nodeTypeString:"
+Node.attributes(i).nodeTypeString
+"\n"
+Indent +"nodeValue:"
+Node.attributes(i).nodeValue
+"\n \n";
/*display each of the node 's
nonattribute child
nodes:*/
for (i=0;i <Node.childNodes.length;++i)
DisplayString +=
DisplayNodes
(Node.childNodes(i),IndentLevel +1);
/*return the string containing the
results:*/
return DisplayString;
}
</SCRIPT>
</HEAD>
<BODY>
<XML ID="dsoXML " SRC=="Inventory Dom.xml"></XML>
<H2>XML Document Object Model (DOM)Nodes</H2>
<DIV ID="DisplayDIV"></DIV>
</BODY>
</HTML>
    script 程序一开始将Document 节点传给DisplayNodes 函式,此函式会传回该Document 节点及其子节点上的显示信息。Script 程序会将显示信息指定给名为DisplayDIV 的DIV 元素中的innerText 属性,其中DIV 元素是位于网页中的BODY标签中。而网页接着将显示此信息。
DisplayDIV.innerText =DisplayNodes(Document,0);
    函式DisplayNodes 的第二个参数指出显示节点资料所使用的缩排等级。函式DisplayNodes 的宣告如下所示:
function DisplayNodes (Node,IndentLevel)
    函式的主要执行步骤如下所示:
    函式将适当数量的空格符储存在变量Indent 中,此变量被用来在每一行节点信息的一开始建立缩排空间。缩排所用的空格符的个数是由DisplayNodes 的传入参数IndentLevel 所决定:
/*build up the indentation for this level:*/
Indent ="";
IndentDelta =" ";
for (i=0;i <IndentLevel;++i)
Indent +=IndentDelta;
    函式会储存目前节点的显示信息-意即,透过Node 参数传送给函式DisplayNodes 的节点(最初是文件节点):
/*display the current node 's properties:*/
DisplayString +=Indent +"nodeName:"
+Node.nodeName +"\n"
+Indent +"nodeTypeType:"
+Node.nodeType +"\n"
+Indent +"nodeTypeString:"
+Node.nodeTypeString +"\n"
+Indent +"nodeValue:"
+Node.nodeValue +"\n \n";
提示
    如果你想要看看每个节点的额外属性,你可以把这些属性加在程序代码区块前。你可以使用表格9-2 中提供的任何的共同节点属性。然而,不要使用任何特定节点形态的属性(例如表格9-3 中属于Document 节点的特定属性),因为并不是所有节点形态都具有这些属性。
    函式会储存目前节点子Attribute 节点的显示信息。缩排空间会随着阶层等级的增加而增加,这里阶层等级是代表这些是目前节点的其子节点:
/*display each of the node 's attribute child nodes:*/
Indent +=IndentDelta;
for (i=0;
Node.attributes !=null
&&i <Node.attributes.length;
++i)
DisplayString +=Indent +"nodeName:"
+Node.attributes(i).nodeName +"\n"
+Indent +"nodeTypeType:"
+Node.attributes(i).nodeType +"\n"
+Indent +"nodeTypeString:"
+Node.attributes(i).nodeTypeString
+"\n"
+Indent +"nodeValue:"
+Node.attributes(i).nodeValue
+"\n \n";
注意
    函式DisplayNodes 并不会显示Attribute 节点中不必要的子Text 节点,因为从Attribute 节点本身的nodeValue 属性直接取得属性值是更为方便的方法。
    借着呼叫这些节点的函式,函式DisplayNodes 会储存每个节点的非属性子节点的显示信息。这些就是所谓递归方式的函式呼叫,如下所示:
/*display each of the node 's nonattribute child nodes:*/
for (i=0;i <Node.childNodes.length;++i)
DisplayString +=
DisplayNodes (Node.childNodes(i),IndentLevel
+1);
    函式DisplayNodes 最后借着传回包含所有节点信息的字符串作为结束:
/*return the string containing the results:*/
return DisplayString;
    3. 在Internet Explorer 5 中开启 ShowNodes.htm 档案。
    注意,nodeTypeString 属性以小写字符来包含所有的节点形态。(例如,形态「Document」 和 「Processing-Instruction」变成「document」与「processinginstruction」来储存其形态名称)
    一开始,网页显示 Inventory Dom.xml 档案中的XML 文件(在列表9-1 与随书光盘中都有提供)。第一部分的显示结果如下面网页中所示。

    4. 要观看其它XML 文件的节点结构,可以编辑网页的data island 来达成。例如,要观看档案Inventory Valid Entity.xml(列表6-1 和随书光盘中都有提供)的节点结构,你可以将data island 的数据修改如下:
<XML ID="dsoXML " SRC="Inventory Valid Entity.xml"></XML>

编辑:黑鹰 [发送给好友] [打印本页] [关闭窗口] [返回顶部]
上一篇:存取XML实体与卷标
下一篇:检查XML文件的有效性
转载请注明来源:www.iyit.net
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。

 相关文章
XML和现代CGI应用程序 XML与其相关技术 XML文件的显示——CSS和XSL
给XML文件定义DTD 动态产生XML文档的几种方式 XML初级应用ABC
编写结构完整的XML文档 XML(可扩展标识语言)的产生 构造未来Web页面的工具语言-- XML
XML 入门介绍 XML入门精解之结构与语法 XML基础教程:掌握SAX
XML基础入门 建立MSXML 测试环境 XML 论坛
让Asp与XML交互 How to generate XML with SQL 2000 XML的一般信息
存取XML的属性 筛选和排序XML数据 使用XSL样式表来显示XML文件
检查XML文件的有效性 存取XML实体与卷标 存取与显示XML文件的属性值
最新更新 热点排行 推荐新闻
WML Script标准函数库
WML Script脚本程序设计(二)
WML Script脚本程序设计(一)
WML Script语法基础
WML编程
CGI测试
CGI教程-ErrorDocument 指令
CGI教程-解码数据发送给CGI脚本
跟我学Perl
Perl教学 Perl5的包和模块
Perl教学 Perl的面向对象编程
Perl教学 Perl5中的引用(指针)
Perl教学 格式化输出
Perl教学 关联数组(哈希表)
Perl教学 子程序
WML Script标准函数库
WML Script脚本程序设计(二)
WML Script脚本程序设计(一)
WML Script语法基础
WML编程
优秀公益广告作品欣赏(8)
java数据类型转换
Windows XP专业版IIS连接数的更改
新开放QQ免费挂级网站
优秀公益广告作品欣赏(7)
免费在QQ上看在线电影电视听音乐
QQ珊瑚虫外挂4.0版本发布!
WEB服务器配置全攻略(三)
免费把QQ炫铃设为本机QQ的系统提示音
Office2007简体中文版浮出水面 美图抢
微软将在华推分期付款,充值卡PC 可低价
 AMD处理器AM2测试 风扇竟运行7分钟
exeplorer.exe错误的问题的总结、解决
ASP.NET 2.0 中的异步页功能应用
硬盘坏道修复及数据恢复宝典
免费登录搜索引擎入口大全
搜索引擎注册九大秘法
小心摄像头成为黑客偷窥你的眼睛
内存混插常见问题和解决方法
Office2007简体中文版浮出水面 美图抢
 友情链接
设置首 页 - 版权声明 - 广告服务 - 关于我们 - 联系我们 - 友情连接
Copyrights © 2004-2006 iYiT.Net All Rights Reserved.
网站合作、广告联系QQ:147007642、466949678
易特网络技术 点击这里给我发消息