前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >使用JavaScript访问XML数据

使用JavaScript访问XML数据

作者头像
阿新
发布于 2018-04-10 07:46:04
发布于 2018-04-10 07:46:04
1.3K00
代码可运行
举报
文章被收录于专栏:c#开发者c#开发者
运行总次数:0
代码可运行

使用JavaScript访问XML数据

在网络浏览器软件中,可以Internet Explorer (IE)现在是一种标准的软件。可以看到,运行不同版本的Windows操作系统(和很多其他的操作系统)的每一台机器几乎都使用IE。微软已经通过ActiveX控件将IE的功能包含在执行成熟的XML处理技术中。

在本篇文章中,我们将讲述如何在IE中使用ActiveX功能来访问并解析XML文档,由此允许网络冲浪者操纵它们。

网上冲浪

我们以一个标准的顺序文档而开始,如表A所示。这一文档包含简单的顺序数据以提供网络冲浪者浏览之用。不仅仅为了显示这些数据,我们还提供了一个简单的用户界面,网上冲浪都可以使用这一界面来浏览XML文档。

表A: order.xml

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?xml version="1.0" ?>
<Order>
  <Account>9900234</Account>
  <Item id="1">
    <SKU>1234</SKU>
    <PricePer>5.95</PricePer>
    <Quantity>100</Quantity>
    <Subtotal>595.00</Subtotal>
    <Description>Super Widget Clamp</Description>
  </Item>
  <Item id="2">
    <SKU>6234</SKU>
    <PricePer>22.00</PricePer>
    <Quantity>10</Quantity>
    <Subtotal>220.00</Subtotal>
    <Description>Mighty Foobar Flange</Description>
  </Item>
  <Item id="3">
    <SKU>9982</SKU>
    <PricePer>2.50</PricePer>
    <Quantity>1000</Quantity>
    <Subtotal>2500.00</Subtotal>
    <Description>Deluxe Doohickie</Description>
  </Item>
  <Item id="4">
    <SKU>3256</SKU>
    <PricePer>389.00</PricePer>
    <Quantity>1</Quantity>
    <Subtotal>389.00</Subtotal>
    <Description>Muckalucket Bucket</Description>
  </Item>
  <NumberItems>1111</NumberItems>
  <Total>3704.00</Total>
  <OrderDate>07/07/2002</OrderDate>
  <OrderNumber>8876</OrderNumber>
</Order>

我们使用一个网络表单以访问这一XML文档,这一表单将显示SKU,价格,数量,各部分的小计,以及顺序中的每一选项的描述。我们的表单还包含向前和向后浏览选项的按钮。

网页的构成

网页的重要部分是在于表单,我们将使用一个表以易读的方式在屏幕上显示。下面是显示HTML表的代码片段:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<form>
  <table border="0">
    <tr><td>SKU</td><td><input type="text" name="SKU"></td></tr>
    <tr><td>Price</td><td><input type="text" name="Price"></td></tr>
    <tr><td>Quantity</td><td><input type="text" name="Quantity"></td></tr>
    <tr><td>Total</td><td><input type="text" name="Total"></td></tr>
    <tr><td>Description</td><td><input type="text"
 name="Description"></td></tr>
  </table>
<input type="button" value="  <<  " onClick="getDataPrev();">
<input type="button" value="  >>  " onClick="getDataNext();">
  </form>

请注意到,我们在表的下面包含了两个按钮,即通过getDataNext() 和getDataPrev()函数来浏览前一个和后一个的记录,这也是我们所要讨论的问题。

脚本

其实,我们网页的实质部分不是在于表单,而是在于控制表单的脚本。在我们的脚本中包括四个部分。首先,我们通过载入XML文档而初始化网页。第二部分是导航到下一个记录。第三步是导航到前一个记录。第四部分是从XML文档中提取单一的值。表B显示了我们的网页的全部内容。

表B: jsxml.html

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<html>
  <head>
    <script language="JavaScript">
<!--
    vari = -1;
    varorderDoc = new ActiveXObject("MSXML2.DOMDocument.3.0");
    orderDoc.load("order.xml");
    var items = orderDoc.selectNodes("/Order/Item");
        
    function getNode(doc, xpath) {
      varretval = "";
      var value = doc.selectSingleNode(xpath);
      if (value) retval = value.text;
      return retval;
    }
    
    function getDataNext() {
      i++;
      if (i > items.length - 1) i = 0;

      document.forms[0].SKU.value = getNode(orderDoc, "/Order/Item[" + i + "]/SKU");
      document.forms[0].Price.value = getNode(orderDoc, "/Order/Item[" + i + "]/PricePer");
      document.forms[0].Quantity.value = getNode(orderDoc, "/Order/Item[" + i + "]/Quantity");
      document.forms[0].Total.value = getNode(orderDoc,"/Order/Item[" + i + "]/Subtotal");
      document.forms[0].Description.value = getNode(orderDoc, "/Order/Item[" + i + "]/Description");
    }
    
    function getDataPrev() {
      i--;
      if (i < 0) i = items.length - 1;
      
      document.forms[0].SKU.value = getNode(orderDoc, "/Order/Item[" + i + "]/SKU");
      document.forms[0].Price.value = getNode(orderDoc,"/Order/Item[" + i + "]/PricePer");
      document.forms[0].Quantity.value = getNode(orderDoc, "/Order/Item[" + i + "]/Quantity");
      document.forms[0].Total.value = getNode(orderDoc,"/Order/Item["+ i + "]/Subtotal");
      document.forms[0].Description.value = getNode(orderDoc, "/Order/Item[" + i + "]/Description");
    }
    
// -->
    </script>
  </head>
  <body onload="getDataNext()">
  <h2>XML Order Database</h2>
  <form>
  <table border="0">
    <tr><td>SKU</td><td><input type="text" name="SKU"></td></tr>
    <tr><td>Price</td><td><input type="text" name="Price"></td></tr>
    <tr><td>Quantity</td><td><input type="text"
 name="Quantity"></td></tr>
    <tr><td>Total</td><td><input type="text" name="Total"></td></tr>
    <tr><td>Description</td><td><input type="text"
 name="Description"></td></tr>
  </table>
<input type="button" value="  <<  " onClick="getDataPrev();">  <input type="button" value="  >>  " onClick="getDataNext();">
  </form>  
  </body>
</html>

运行

这一网页将传入并运行脚本的初始化。你一定确保order.xml文档与jsxml.html在相同的相同的路径上。

初始化部分将一个新的ActiveX对象例示为MSXML2.DOMDocument.3.0对象类型,然后脚本传入order.xml文档到内存中,并选择所有的/Order/Item节点。我们使用/Order/Item节点以识别文档已经包含的选项。

文档中的<body>标准有一个onLoad属性,这一属性能够使得网页调用getDataNext()而初始化。这一功能可用于从XML文档中获得下一个值并显示在表单中。我们使用一个简单的索引来访问特定的选项。

向前(>>)和向后(<<)按钮都使用相同的机制。首先响应onClick事件而调用getDataNext() 或者getDataPrev(),这两个函数使用了逻辑方法以避免文档以外的范围访问我们的记录。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2005-11-27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
HTML购物车示例(勾选、删除、添加和结算功能)
以下是一个简单的HTML购物车示例,包含勾选、删除、添加和结算功能。结算功能使用PHP实现,可以获取选中商品的ID。
德宏大魔王
2023/08/08
1K0
HTML购物车示例(勾选、删除、添加和结算功能)
Javascript中最常用的55个经典技巧(转)
1. oncontextmenu="window.event.returnValue=false" 将彻底屏蔽鼠标右键  <table border oncontextmenu=return(false)><td>no</table> 可用于Table  2. <body onselectstart="return false"> 取消选取、防止复制  3. onpaste="return false" 不准粘贴  4. oncopy="return false;" oncut="return fal
阿豪聊干货
2018/08/09
4840
HTML5+CSS3+JavaScript从入门到精通-17
HTML5+CSS3+JavaScript从入门到精通 17-01 用户登录界面! <!--web17-01--> <!-- 与第四章的表单呼应 --> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>用户登录界面!</title> <script type="text/javascript"> function alert_info() { //win
qiqi_fu
2021/12/06
1.4K0
HTML5+CSS3+JavaScript从入门到精通-17
JavaScript 笔记
    特点:         1. 弱类型          2. 基于对象。(因为面向对象需要具有封装、继承、多态的特征)
卓越笔记
2023/02/18
1.8K0
Web前端三剑客学习笔记
一直没有系统的学习HTML,CSS,JS都是东学一点,西学一点,想着暑假得空,便系统的学习下吧,故于此记录之。
小简
2022/12/29
2.3K0
Web前端三剑客学习笔记
昆仑会员此打印方式只针对用会员卡结账的消费,放开限制解决方案
昆仑会员此打印方式只针对用会员卡结账的消费,放开限制解决方案 在这个function里面 function PrintDialog() { var print_card_fee = "<%=print_card_fee %>" //alert(print_card_fee) var balance=JStrToMoney(form1.net.value); var last_balance=parseFloat(balance)+pa
landv
2019/12/17
7370
昆仑会员此打印方式只针对用会员卡结账的消费,放开限制解决方案
常见的Form表单提交方式
在进行项目编程的时候,我们难免会去编写一些简单的前端页面. 而编写前端页面就力不开 form表单的支持. 下面就form表单的提交方式进行如下探寻
时间静止不是简史
2020/07/25
3.5K0
XML Encryption in .Net
XML Encryption in .Net One of the new features being introduced with the Whidbey version of the .Net framework is XML encryption.  XML Encryption allows you to encrypt arbitrary data, and have the result be an XML element.  Much as XML digital signatures a
阿新
2018/04/12
1K0
总结收藏的41个JavaScript实用技巧
在文件的根目录放进去这个图片,后缀修改成ico就可以了 6. 可以在收藏夹中显示出你的图标
csxiaoyao
2019/02/18
1.5K0
231个web前端的javascript特效分享(仅供本人学习,非教程类型)
<input type=”text” value=”郭强”onfocus=”if(value==’郭强’) {value=”}”onblur=”if
botkenni
2019/09/03
1.4K0
2.XML之编程解析示例笔记
描述:在采用JavaScript解析XML时候常常采用AJAX 技术 与 XML 的融合,即XML解析器把 XML 文档转换为 XML DOM 对象 - 可通过 JavaScript 操作的对象。
全栈工程师修炼指南
2020/10/23
8340
2.XML之编程解析示例笔记
JavaScript 各种事件触发总结
鼠标 Click: 鼠标在一个对象上左键点击触发Click事件,对象包括button,document,checkbox,link,radio,submit.
微软技术分享
2022/12/28
3.9K0
模仿京东购物车实现加减操作
在线展示:https://gethtml.cn/project/2020/04/15/index.html
Dreamy.TZK
2020/04/17
1.7K0
React大法:如何轻松编写动态PDF文件
在本文中,我们将学习如何通过接受用户的输入来生成动态 PDF。一些用例包括根据收到的数据生成invoices、certificates、resumes、等。reports
zayyo
2023/10/04
7881
javaScript的常见document对象
对象属性 document.title //设置文档标题等价于HTML的title标签 document.bgColor //设置页面背景色 document.fgColor //设置前景色(文
botkenni
2019/09/03
8920
javaScript的常见document对象
JavaScript学习笔记(一)
wdm,这个寒假越过越长… 寒假在家学习JavaScript的相关知识,写博客作为笔记 我是以清华大学出版社的《JavaScript从入门到项目实践》作为学习用书的
wsuo
2020/07/31
3.3K0
JavaScript学习笔记(一)
JavaScript基本入门教程
                必须以字母或下划线开头,中间可以是数字、字符或下划线
itlemon
2020/04/03
4.1K0
javascript生成.xls文件(兼容IE&Chrome&Firefox)
贴代码,一切尽在注释中 <html> <head> <meta charset="utf-8"> </head> <body> <input type="button" value="下载设备模板" onclick="foo();" /> <script type="text/javascript" language="javascript"> var downloadTemplate = function() { /** * 根据所给数据创建并返回单行 tr节点
lonelydawn
2018/02/09
1K0
javascript生成.xls文件(兼容IE&Chrome&Firefox)
前端MVC Vue2学习总结(一)——MVC与vue2概要、模板、数据绑定与综合示例
 一、前端MVC概要 1.1、库与框架的区别 框架是一个软件的半成品,在全局范围内给了大的约束。库是工具,在单点上给我们提供功能。框架是依赖库的。Vue是框架而jQuery则是库。 1.2、AMD与C
张果
2018/01/04
3.7K0
前端MVC Vue2学习总结(一)——MVC与vue2概要、模板、数据绑定与综合示例
【javaScript案例】之类似购物车的效果实现
实现的效果是在购物车界面选择想要选购的商品,提交后转到支付界面确认支付,最后支付成功后返回选购页面。
xinxin-l
2022/03/30
8930
【javaScript案例】之类似购物车的效果实现
推荐阅读
相关推荐
HTML购物车示例(勾选、删除、添加和结算功能)
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文