`

xml数据岛例子

阅读更多
XML数据岛技术的总结
  最近做的一个项目中运用 xml 数据岛技术,所以把数据岛方面的知识总结一下。

  XML 数据岛 ( data islands )就是被 html 页面引用或者包含的 xml 数据,是从 IE5 开始引入的一项技术。可以通过 xml 标签很轻松将数据岛插入到 html 文档中。那么怎么访问 xml 数据岛的数据呢,很简单,通过 xml 的 id 。在页面中的数据岛和其他的 xml 数据一样,可以通过标准的dom 方法来进行访问。

   数据岛的优点是可以很容易的将 xml 中的数据和 html 元素进行绑定,免去了手工把数据填充到 html 中的麻烦。修改数据岛中的数据,页面上与之绑定的html元素的值也随之改变。 OK ,先来看个数据岛之 Hello World 版,

  数据岛其实就是一串 xml ,必须要用 xml 标签围起来,示例如下:

<xml id= "island" >

<root>


   <p1>
    <name> magicdoom </name>

    <age> 24 </age>

    <email> magicdoom@gmail.com </email>


   </p1> 
</root>

</xml>

数据岛有两种定义方式,一种是直接将上述 xml 嵌入到 html 页面中,另一种是见 xml 数据保存在单独的 xml 文件中,在页面只需嵌入 <xml id= "island" src= "xxx.xml" ></xml>

其中的 src 属性值为保存 xml 数据的那个文件的位置。

   如何将上面定义好的 xml 数据岛绑定到 html 控件上呢?答案是通过 datasrc , datafld 属性,下面是一个将 xml 数据岛绑定到 html 控件上的示例:

<table width= "100%" datasrc= "#island" >

 

<thead>

 

      <tr>

 

            <th> Name </th>

 

            <th> Age </th>

 

            <th> Email </th>

 

      </tr>

 

</thead>

 

<tbody>

 

      <tr>

 

            <td align= "center" ><span  datafld= "name" ></span></td>

 

            <td align= "center" ><span datafld= "age" ></span></td>

 

            <td align= "center" ><span datafld= "email" ></span></td>

 

       </tr>

 

</tbody>

 

</table>

例中 table 的 datasrc 属性的 value 为 xml 数据岛中的定义的 id ,注意必须要在前头加上 # 。

表格中的 datafld 属性对应于 xml 中的元素的名称。

将上述数据岛和 html 代码保存到一个 html 文件中,在 IE 中打开,可以看到结果如下:

Name
Age
Email

magicdoom
24
magicdoom@gmail.com


               

下面我们来看看在 javascript 中怎样通过DOM访问数据岛中的数据

 

xmldoc = island;     // 取数据岛

var rootElement = xmldoc.documentElement.firstChild;  // 取根元素

 

// 实现打印出数据岛中第一个元素的值

  if (rootElement.hasChildNodes())

 

  alert (rootElement.firstChild.text) ;

 

// 创建一个新的元素,添加到数据岛中

var test = xmldoc.createElement( 'test' );

 

  var testTxt = xmldoc.createTextNode( "This is a test!" );

 

  test.appendChild(testTxt);

 

  rootElement.appendChild(test);

  alert (rootElement.lastChild.text) ;

 

// 删除数据岛中的一个元素

rootElement.removeChild(rootElement.lastChild) ;

 

// 修改数据岛中的一个元素的值

rootElement.firstChild.text= "new value" ;




//查找xml元素 使用getElementsByTagName返回一个element的数组
rootElement.getElementsByTagName("name")(0).text



//测试数据岛绑定的效果
在页面中定义<button  onclick="testDSO()">testDSO</button>
function  testDSO()
{
rootElement.getElementsByTagName("name")(0).text="modefied name";
}
//点击按钮后就会发现页面上的Name的值也随之改变
 

     XML 数据岛的应用很容易和其他的技术进行结合。我当前做的一个项目中,就是和 HTC 以及 XmlHttp 技术进行结合。 htc 做了一些功能强大的控件(比如Tree非常好用),底层通过XmlHttp 与后台的服务器进行交互,可以达到无刷新提交页面。前台通过js来操纵页面中的数据岛和发送数据到后台的java类,项目的 框架支持在js调用后台 java 类的方法,有点类似于 DWR 。后台的 java 类返回 XML 数据到前台的 js , js 再将xml数据注入到页面的数据岛中。
   项目采用的框架是国内的一家公司的商业产品, 通过几个月的实际使用,虽然还有一些问题,但是这个框架确实是大大提高了开发效率。

最后总结一下 xml 数据岛的最大优点是可以和html元素进行绑定,修改数据岛中的数据,与之绑定的html元素的值也会随之改变。但是也要看到它的缺点:

1.只能在 IE 下运行,firefox等其他的浏览器下无法使用。

2.安全性, xml 数据岛可以通过查看 html 的源代码获取。

 

另:在 DWR 中,提供有一些便捷的 js 函数,可以将后台 java 方法传回的 json 格式的 js 对象的属性值,赋给 html 页面中的 html 元素, dwr 会根据 html 元素的 id 进行自动赋值。这种方式也蛮简单方便的。


文章来源:http://www.blogjava.net/magicdoom/archive/2006/03/01/32968.html
分享到:
评论

相关推荐

    用XML数据岛创建上下文菜单

    上下文菜单 就是用户在页面上单击右键时所显示的一组命令。微软的MSDN有一个简单的例子说明了怎样建立自定义...我们这里利用XML数据岛来存储上下文菜单的多个定义,其中的每一个定义都可以和文档中的任一元素相联系。

    用Javascript 实现XML 文档数据检索

    本文阐述了基于XML 的数据检索技术, 并介绍了DOM 对XML 文档的操作。最后通 过例子实现用Javascript 的DOM 对XML 文档节点进行检索, 检索结果用XML 数据岛在HTML 页面 中显示。

    利用AJAX与数据岛实现无刷新绑定

    其次还需要知道XML数据岛的相关知识。 下面我们先来看一个简单的绑定例子: 第一步先确定XML数据源 &lt;xml ID=xmlData name=xmlData&gt;    &lt;AUTHOR&gt;John Smith  &lt;GENERATOR&gt;Visual Notepad  &lt;PAGETYPE&gt;...

    ORACLE+xml+JSP结合

    用ORACLE做的JSP登录,其中包括XML转换,用数据岛技术,学习的好例子

    无限菜单之 xml+popup 版(IE5.5+)

    既然大胆假设了一把,那么就来小心求证一下:首先,用xsl来实现解析一级xml很容易搞定,使用xsl:for-each遍历生成子菜单,并且,如果子菜单中还有子xml数据,将这些子xml数据存在子菜单对应的数据岛中,以备后面处理...

    XML中文指南

    XML中文指南 全集 包括基础、高级部分...基础包括语法 元素 确认 浏览器 检视 使用CSS 和 XSL 数据岛 解析器;高级部分包括命名空间 CDATA 编码 服务器 HTTP 行为和技术等;实例包括例子和测验 包括部分书籍和XML规范。

    赛尔号发包例子以及逆向过程-易语言

    以前分享过摩尔庄园、奥比岛等发包例子,后来官方更改了加密手段,这次分享个赛尔号的发送数据例子 切勿用于非法用途,本贴只用于技术交流与学习 赛尔号通信数据的逆向分析与还原(思路篇) 0x01 前言 flash游戏即将...

    精通JavaScript

    • 2.11.htm 字符串型转换为逻辑型数据 • 2.12.htm toLowerCase()方法 • 2.13.htm 通过字符串调用toLowerCase()方法 • 2.14.htm 使用值的数据操作 • 2.15.htm 对数据的...

    ASP3《高级编程》(第一部分)

    11.2.4 IE数据岛和绑定 358 11.2.5 以XML数据格式保存记录集 361 11.2.6 打开记录集 365 11.3 用XSL来设计XML 367 11.4 相关的领域 371 11.5 用于SQL Server的XML技术预览 372 11.6 小结 373 第12章 通用数据...

    ASP3《高级编程》(第二部分)

    11.2.4 IE数据岛和绑定 358 11.2.5 以XML数据格式保存记录集 361 11.2.6 打开记录集 365 11.3 用XSL来设计XML 367 11.4 相关的领域 371 11.5 用于SQL Server的XML技术预览 372 11.6 小结 373 第12章 通用数据...

    asp.net知识库

    一个XSLT的简单例子 XSLXSLT板主题整理 xsl入门的好文章 新手学习XSL的好东西 XSL语法介绍 XSL学习心得 - 调用属性值 XSLT与XML转换的详细介绍 功能应用 读写搜索 基础教程 RSS Web2.0时代,RSS你会用了吗?(技术...

    空气质量检测

    涉及的知识点不多,项目结构简单注释丰富,很适合做教学演示或者安卓初学者自学网络异步请求、数据分析、界面设计等内容的研究例子,项目附带一份详细的pdf开发文档,文档对网络数据获取、XML解析应用数据到布局等...

    js使用小技巧

    Javascript小技巧一箩筐 事件源对象 event.srcElement.tagName event.srcElement.type ... 捕获释放 event.srcElement.setCapture();...event.srcElement.releaseCapture();... 根据鼠标获得元素: document....

Global site tag (gtag.js) - Google Analytics