小毛驴(xml)试乘记(三):jQuery方法

jQuery可以像处理HTML的DOM那样处理xml,xml节点的存取就更简单一些。

这里需要三个文件。

第一,html文件,其中定义的显示数据的模板

第二,xml文件。数据本身。

第三,javascript文件。其中定义如何解释xml并将其添加到html文件之中。

有关注释附加在各文件相关行附近。

html文件

<html>
 <head>
  <style type="text/css"> <!--css的定义-->
	body {font_family:Arial, helvetica, sans_serif; font_size:12pt; background_color:white;}
    table, td, th { border: thin #2b2b2b solid; border-collapse:collapse; padding:4px; background_color:white; color:black;}
  </style>
 </head>
<body>
<table class="tbl">
<tbody>
<tr id="xml_header">
 <th>Entry</th> <th>Service</th> <th>Action</th>
</tr>
<tr id="xml_data"><!--XML数据的模板行-->
  <td>#Entry#</td> <td>#Service#</td> <td>#Action#</td>
</tr>
</tbody>
</table>

<!--需要参照jquery的函数库。也可以下载到自己的服务器或PC上使用-->
<script src="http://code.jquery.com/jquery-1.6.2.min.js"></script>
<script src="info.js"></script>
</body>
</html>

xml文件:data.xml

<?xml version="1.0" encoding="UTF-8" ?>
<config> <!--在config和rules之间有许多数据,这里简化-->
 <devices>
  <entry>
    <vsys>
	 <entry>
	  <rulebase>
       <security>
		<rules>
		<entry  name="GlobalProtect">
		<action>allow</action>
		<service>
		 <member>service-https</member>
		 <member>TCP_80</member>
		</service>
		</entry>
		<entry name="ping_deny">
		<action>allow</action>
		<service>
		 <member>DNS</member>
		 <member>service-https</member>
		 <member>TCP_80</member>
		</service>
		</entry>
		<entry  name="ping">
		<action>deny</action>
		<service>
		 <member>any</member>
		</service>
		</entry>
		</rules>
      </security>
	 </rulebase>
	</entry>
   </vsys>
  </entry>
 </devices>
</config>

javascript文件:info.js

// -------------------------------------------------
// Initialization
// -------------------------------------------------
var xml_header, xml_data;
$(function(){
    //从HTML文件中读取表头和表行的html文本
	xml_header = $("#xml_header").html();
	xml_data   = $("#xml_data").html();
	//初始化表格
    $("table.tbl tbody").html("");
	//加载自定义函数
	xmlLoad();

});

// -------------------------------------------------
// XML loading
// -------------------------------------------------

function xmlLoad(){
    $.ajax({
        url:'data.xml',
        type:'get',
        dataType:'xml',
        timeout:1000,
        success:parse_xml
    });
}

// -------------------------------------------------
// 为处理XML做准备
// -------------------------------------------------

function parse_xml(xml,status){
    if(status!='success')return;
	// 添加表头
	$('<tr>'+xml_header+'</tr>').appendTo('table.tbl tbody');
    $(xml).find('rules').find('entry').each(disp);
}

// -------------------------------------------------
// 重写HTML
// -------------------------------------------------

function disp(){

    //取得entry的属性name
    var $entry = $(this).attr('name');
	//取得action的单一值
    var $action = $(this).find('action').text();
	//取得service的多个值,然后更换换行符(\n)为html的<br>
    var $service = $(this).find('service').text().split('\n').join('<br />');

    //根据HTML文件按中的模板行
	//【<td>#Entry#</td> <td>#Service#</td> <td>#Action#</td>】重写表行
	var html_data = xml_data.replace('#Entry#',$entry).replace('#Service#',$service).replace('#Action#',$action);
    $('<tr>'+html_data+'</tr>').appendTo('table.tbl tbody');
}

验证结果

Entry Service Action
GlobalProtect service-https

TCP_80

allow
ping_deny DNS

service-https

TCP_80

allow
ping any deny

文件在当地PC上,Firefox/Safari 可以正确处理显示该html文件。

如果将以上三个文件上传到web服务器,IE/Chrome/Firefox/Safari都可正确处理显示该html文件。

时间: 2024-10-29 19:11:32

小毛驴(xml)试乘记(三):jQuery方法的相关文章

桌面小部件Wight父类AppWidgetProvider的三个方法

onUpdate()这个方法会在每次更新App Widget的时候调用,数据更新的逻辑都写在这个方法里边.而且要注意的是:在用户添加小部件的时候,会首先调用这个方法,应该在这个方法里进行初始化操作,比如初始化展示给用户的界面等等.....比如:TextView的更新,使某一个控件可见或者不可见之类的操作. onEnabled()这个方法会在App Widget可用的时候调用,注意在用户添加小部件的时候首先调用的不是这个方法,不是这个方法!不要在这里进行初始化操作..... onDisabled(

javascript 学习小结 (三) jQuery封装ajax尝试 by FungLeo

javascript 学习小结 (三) jQuery封装ajax尝试 by FungLeo 前言 在JS学习中,对于原生的很多东西我理解得并不透彻.但是使用jQuery来操作DOM,基本上还是非常熟练的.但是对于AJAX数据交互的处理,我不是很理解. 近期团队交给我一个后端全接口提供给我的项目.我要利用这些接口来自己组织前端代码.为了学习,我决定不使用VUE或者其他的前端框架来做.而是只使用jQuery框架,数据的部分全部使用拼接字符串的形式实现. 获取数据,显示数据,提交数据. 在这个项目中(

spring在xml文件中配置bean的三种方法

一.最常见,也是缺省,是调用spring的缺省工厂类 spring缺省工厂类:org.springframework.beans.factory.support.DefaultListableBeanFactory使用其静态方法preInstantiateSingletons() 配置文件中最普通最基本的定义一个普通bean<bean id="DvdTypeDAOBean" class="com.machome.dvd.impl.DvdTypeDAO" >

java解析xml的三种方法

java解析XML的三种方法 1.SAX事件解析 package com.wzh.sax; import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler; // public class Saxhandler extends DefaultHandler { @Override public void startDocument() throws

华为机试 --- 求最大三位数

题目:输入10位0-9数字,取其中三位不同数字组合,求组合出来的最大三位数. 如输入 1 2 3 4 5 6 7 8 9 0,组合出来987最大. 测试代码如下: #include <stdio.h> #include <stdlib.h> int IsSame(int *a, int num); int main() { int i=0; int j=0; int a[10]={0}; int input =0; int length =0; int temp=0; for (i

jQuery -&gt; 获取后代元素的三种方法

如果我们有内容如下的html文件,那么如何选取包含在<p>元素内的<i>元素呢? 邪馬台国の謎と弥生時代 紀元前1000年ごろ.水稲工作の技術をもつ集団が大挙して日本に移住してきた.これによって弥生時代が始まった. 縄文人も南方から伝わった稲を栽培していたが.彼らは原野を開いて大掛かりな水田をつくる発想を持たなかった.しかし.北九州に新たな文化を持って集団が来たのを知った彼らは次第に.水稲工作を受け入れ弥生人へとか分かっていた. html源码如下 <h1>邪馬台国の謎と

jquery 点击显示隐藏的三种方法

jquery点击显示隐藏的三种方法,从复杂到简单.使用jquery需要引用jquery库,如右所示<script src="jquery-1.11.3.min.js"type="text/javascript"></script>. 旁边按钮随着收缩展开发生状态变化,展开+变—,收缩—变+. 收缩效果: 展开效果: 一.HTML结构(盗用网上的) <body> <!-- 收缩展开效果 --><li class=&

eclipse下java中注释字体太小和xml中中文字体太小问题解决方法

我们在win7下进行android应用开发,需要搭建相应的开发环境.现在普遍基本上都是eclipse+adt+sdk,在本人搭建完环境后,发现eclipse下,java中的注释和xml中的中文字体变得特别小,无法看的清楚.解决方法如下: 1.Java中字体变大方法: 打开eclipse,Window-->Preferences,如下图打开: 双击第二个红色框,如下图: 将字体改成五号即可. 2.xml中中文字体太小解决方法: 打开eclipse,Window-->Preferences--&g

eclipse下java中凝视字体太小和xml中中文字体太小问题解决方法

我们在win7下进行android应用开发.须要搭建对应的开发环境.如今普遍基本上都是eclipse+adt+sdk,在本人搭建完环境后,发现eclipse下.java中的凝视和xml中的中文字体变得特别小,无法看的清楚.解决方法例如以下: 1.Java中字体变慷慨法: 打开eclipse.Window-->Preferences,例如以下图打开: 双击第二个红色框,例如以下图: 将字体改成五号就可以. 2.xml中中文字体太小解决方法: 打开eclipse.Window-->Preferen

三.jquery.datatables.js表格编辑与删除

1.为了使用如图效果(即将按钮放入行内http://www.datatables.net/examples/ajax/null_data_source.html) 采用了另一个数据格式 2.后台php,取表格数据变为: public function initable(){ $db = M('yanfa_project')->select(); // 取$db的长度 // $len =count($db); $item=array(); // 循环将$db二维数组每一项的value取出放一个数组