关于前后台DOM树应用
Dom对象是在程序开发中很实用而且经常会应用到的技术,通过Dom对象可以传递具有树结构的对象,有利用前台页面的诸如树的显示和相应值的处理,本文从两个方面全面解析Dom对象的应用,一是从后台得到完整的Dom形式的字符串后到前台页面组装成Dom对象,二是直接在前台页面上直接组装成一个Dom对象。
(1)后台可以得到的数据一般也分为两种类型,一是直接读取硬盘上的.xml文件生成的,这种形式可以这样调用:
DocumentBuilder builder=DocumentBuilderFactory
.newInstance().newDocumentBuilder();
Document
doc=null;  //这两个类最好用org.w3c.dom.Document
String
rootPath=ZhcxtjCtrlHelp.class.getResource("").toString();
doc=builder.parse(rootPath+"ybcxtj.xml");
在后台得到Doc后如果想取值可以这么调用:
NodeList
convertList=doc.getElementsByTagName(elementName);
Element
thisNode=(Element)convertList.item(0);
String
nodeContent=thisNode.getAttribute("nodeValue");
当然方法还有很多,不再赘述。
后台得到Dom对象的另一种方式或者说情况是有时候只是一串字符串,为了前台页面的显示效果,要将其转成               
Dom 对象,这个时候可以这样调用:
try {
builder=DocumentBuilderFactory
.newInstance().newDocumentBuilder();
}
catch (ParserConfigurationException e)
{
e.printStackTrace();
}
Document
doc=builder.newDocument();
Element root= doc.createElement("root");
root.setAttribute("state",state);
root.setAttribute("message",message); //state 和message 是你传递过来的参数
doc.appendChild(root);
当然,第二种方式可以自己随心所欲的控制生成的Doc的节点,只要自己控制好他们的appendChild关系即可。
如果要将这个Doc对象传到前台页面,除了ajax可以直接传递Dom对象,类似这样:
response.setContentType("text/xml;charset=UTF-8");
PrintWriter
out = response.getWriter();
out.println(dataXml);
out.flush();
out.close();
return null;
绝大多数情况下,我们还是需要先将Doc对象转换成String,然后传到前台页面的,这个从Dom对象转换成String
的方法是这样的:
OutputFormat format;
try {
format = new OutputFormat(SrcDoc);
format.setEncoding("UTF-8");
StringWriter stringOut = new
StringWriter();
XMLSerializer serial = new
XMLSerializer(stringOut, format);
// org.apache.xml.serialize.OutputFormat;
// org.apache.xml.serialize.XMLSerializer;
serial.asDOMSerializer();
serial.serialize(SrcDoc.getDocumentElement());
return stringOut.toString();
}catch
(Exception e) {
return
"<ERR/>";
}
这样,就完成了后台组装Dom对象,并以String的形式传到了前台页面。
通过后台传值的方式如何在前台如何得到后台的Dom对象?除了ajax方式的
var doc = partxmlhttp.responseXML;//得到dialogmessage Dom对象
绝大多数情况,我们需要在页面上根据后台传来的String字符串,拼装成一个Dom。这里,我们只讲基于 Windows的Explorer浏览器的Dom生成,因为就Mozilla而言,确实是与Explorer有很大差异的。
其代码是这样的:
var thisDom;
var domxml=document.getElementById("xmlstring").value; //得到从后台传过来的配置树字符串
var oDom = new ActiveXObject("MSXML2.DOMDocument.5.0"); //利用内置的ActiveX得到Dom控件
//MSXML2.DOMDocument.5.0是可选的,根据版本的不同,一般这是最新的
//因为IE从5.0版本就内嵌了这个Dom的ActiveX控件。
oDom.async = false; //默认是是异步加载,这里控制是同步加载的方式
if (strPath != null){
thisDom = oDom.load(strPath) ? oDom
: null;
//strPath是路径,可以按指定路径来加载
}else{
thisDom = oDom.loadXML(domxml) ?
oDom : null;
}
通过上面的代码,我们就在页面上得到了thisDom这个对象。
(2)第二种方式就是在前台页面直接new一个Dom对象出来,这种方式是很简单,代码如下:
var dom= new
ActiveXObject("MSXML2.DOMDocument.5.0");
dom.loadXML("<?xml version='1.0' encoding='utf-8'
?><navi></navi>");
var
root1=dom.createElement("navi");
root1.setAttribute("prikey","SQ");
var
node11=dom.createElement("name");
node11.setAttribute("text","A级");
node11.setAttribute("value","yhl_aj");
node11.text="Dimmacro";
var
node12=dom.createElement("name");
node12.setAttribute("text","B级");
node12.setAttribute("value","yhl_bj");
root1.appendChild(node11);root1.appendChild(node12);
var
root2=dom.createElement("navi");
root2.setAttribute("prikey","SB");
var
node21=dom.createElement("name");
node21.setAttribute("text","B级");
node21.setAttribute("value","bzl_bj");
root2.appendChild(node21);
dom.documentElement.appendChild(root1);
dom.documentElement.appendChild(root2);
通过这种手动设置的方式,我们就可以创建一个Dom对象了。
关于前后台DOM树应用的更多相关文章
- DOM树操作
		
DOM 操作 访问与树关系(节点) 绘制 DOM 树: childNodes, attributes 从一个中心元素访问其所有的直系亲属元素 访问父节点: parentNode 访问上一个兄弟节点: ...
 - 通过Ztree生成页面html元素Dom树,以及拖拽改变元素的位置
		
zTree 是一款依靠 jQuery 实现的多功能 "树插件",http://www.treejs.cn/v3/main.php#_zTreeInfo,功能强大,不多赘述. 下面我 ...
 - 【VB6】使用VB6创建和访问Dom树【爬虫基础知识 】
		
使用VB6创建和访问Dom树 关键字:VB,DOM,HTML,爬虫,IHTMLDocument 我们知道,在VB中一般大家会用WebBrowser来获取和操作dom对象. 但是,有这样一种情形,却让我 ...
 - jquery: json树组数据输出到表格Dom树的处理方法
		
项目背景 项目中需要把表格重排显示 处理方法 思路主要是用历遍Json数组把json数据一个个append到5个表格里,还要给每个单元格绑定个单击弹出自定义对话框,表格分了单双行,第一行最后还要改ro ...
 - jQuery操作列表数据转成Json再输出为html dom树
		
jQuery 把列表数据转成Json再输出为如下 dom树 <div id="menu" class="lv1"> <ul class=&qu ...
 - 【浏览器渲染原理】渲染树构建之渲染树和DOM树的关系(转载  学习中。。。)
		
在DOM树构建的同时,浏览器会构建渲染树(render tree).渲染树的节点(渲染器),在Gecko中称为frame,而在webkit中称为renderer.渲染器是在文档解析和创建DOM节点后创 ...
 - dom树的介绍,及原理分析
		
三.解析和DOM树的构建 1.解析: 由于解析渲染引擎是一个非常重要的过程,我们将会一步步的深入,现在让我们来介绍解析. 解析一个文档,意味着把它转换为一个有意义的结构——代码可以了解和使用的东西,解 ...
 - 页面全部加载完毕和页面dom树加载完毕
		
dom树加载完毕 $(document).ready()//原生写法document.ready = function (callback) { ///兼容FF,Google ...
 - 从Chrome源码看浏览器如何构建DOM树
		
.aligncenter { clear: both; display: block; margin-left: auto; margin-right: auto } p { font-size: 1 ...
 
随机推荐
- python 字符编码处理问题总结
			
Python中常常遇到这种字符编码问题,尤其在处理网页源代码时(特别是爬虫中): UnicodeDecodeError: ‘XXX' codec can't decode bytes in posit ...
 - 764. Largest Plus Sign最大的dfs十字架
			
[抄题]: 求挖掉一些区域后,能允许出现的最大十字架 In a 2D grid from (0, 0) to (N-1, N-1), every cell contains a 1, except t ...
 - TTF字体基本知识及其在QT中的应用
			
字体类型 以Windows为例,有4种字体技术: Raster:光栅型,就是用位图来绘制字形(glyph),每个字都以位图形式保存 Vector:矢量型,就是用一系列直线的结束点来表示字形 TrueT ...
 - [SoapUI] context.expand 和 groovyUtils.getXmlHolder 有什么不一样
			
context.expand 和 groovyUtils.getXmlHolder 有什么不一样?互相之间怎么转换 import com.eviware.soapui.support.GroovyUt ...
 - 实践作业4---DAY5阶段四。
			
阶段四:分析 这一阶段工作就是分析博客园与csdn优点缺点: 根据邹欣老师在<现代软件工程>一书中的描述: 程序 = 算法 + 数据结构: 软件 = 程序 + 软件工程(软件服务还有数据, ...
 - 15 输入三个整数x,y,z,请把这三个数由小到大输出。
			
题目:输入三个整数x,y,z,请把这三个数由小到大输出. public class _015ThreeNumberSort { public static void main(String[] arg ...
 - kalilinux-权限提升
			
meterpeter: 可以在 Meterpreter 使用 incognito 来开始模拟过程: use incognito 展示 incognito 的帮助文档,通过输入 help 命令: hel ...
 - 公司web安全等级提升
			
目录 背景介绍 目录 针对国调的初次测试结果 解决方案 二次测试 关于XSS 什么是XSS 基本防御 代码防御 xss代码辑录 说明 参考文章 版本记录 背景介绍 公司的一个web数据展示系统,本来是 ...
 - linux fdisk分区工具
			
fdisk来自IBM老牌分区工具,支持绝大多数操作系统,几乎所有的linux的发行版本都装有disk,包括linux的resure模式下的依然能够使用. fdisk是一个机遇MBR的分区工具,所有如果 ...
 - Java NIO学习-详细内容(一)
			
一.三大类 1.Channels FileChannel DatagramChannel SocketChannel ServerSocketChannel 2.Selector与SelectionK ...