`
accpxudajian
  • 浏览: 453035 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JS操作XMLDOM(遍历和打印)

阅读更多

 

/*
说明:在javaweb工程中,很多后台服务返回的都是XML字符串,然后前端把XML字符串再转换成XMLDOM对象,然后操作XMLDOM对象获取相关的值。

这个组件,不是针对某个节点使用的,而是作用域整个XMLDOM文档对象整体上,总体来说分两大部分:

   1.打印XMLDOM对象的结构(即包含哪些子节点,子节点的名称和值,以及子节点包含的所有属性)。

   2.打印XMLDOM对象的全部文本,类似于XMLDOM对象的toString()方法一样,可以打印所有内容:包括节点名称,节点值,节点属性以及注释。


其他:此组件主要介绍是三个方法:
   1.createXmlDOM
   2.JSLogger.log
   3.JSLogger.logXML
具体是方法说明和使用方法,详见下边。
*/

 

 

 #js脚本代码(完整代码请看附件)

 

/*
* 将字符串转化成XMLDom对象 
* @param xmlStr xml字符串
*/
function createXmlDOM(xmlStr){
	var xmlDom = null;
	if (navigator.userAgent.indexOf("MSIE") > 0){//IE only
		xmlDom=new ActiveXObject("Microsoft.XMLDOM");
		xmlDom.async="false";
		xmlDom.loadXML(xmlStr);
	 }else{//FF,Chrome 等
		 xmlDom=(new DOMParser()).parseFromString(xmlStr,"text/xml");
	  }
	return xmlDom;
}

	//TODO 测试数据1
	var xmlString  =  '<TaskinstanceInfo name="djd" sex="boy">';
	xmlString+='<pkid>2919</pkid>';
	xmlString+='<taskdefineId>2</taskdefineId>';
	xmlString+='<taskdefineName>林业资源</taskdefineName>';
	xmlString+='<enodeTaskinsId>0</enodeTaskinsId>';
	xmlString+='<taskStatus>COMPLETE</taskStatus>';
	xmlString+='<startTime>2012-07-10 15:34:12.0 CST</startTime>';
	xmlString+='<lastCompleteTime>2012-07-11 12:00:00.0 CST</lastCompleteTime>';
	xmlString+='<filePath>D:\\upload\\test文件</filePath>';
	xmlString+='<fileSize>102400</fileSize>';
	xmlString+='<fileFormat>E00</fileFormat>';
	xmlString+='<processInfo>中心处理中</processInfo>';
	xmlString+='<childsss><son><sex>boy</sex><age>23</age></son></childsss>';
	xmlString+='<transportType>FTP</transportType>';
	xmlString+='<dataType>SPATIALDATA</dataType>';
	xmlString+='<taskSourceIp>172.16.10.16</taskSourceIp>';
	xmlString+='<exchangeNodeId>2</exchangeNodeId>';
	xmlString+='<taskSourceDesc>null</taskSourceDesc>';
	xmlString+='<taskCreaterId>4</taskCreaterId>';
	xmlString+='<taskCreaterName>Tite</taskCreaterName>';
	xmlString+='<taskCreaterDept>国土资源厅</taskCreaterDept>';
	xmlString+='<localSourceId>d388f9d1-9453-4313-b1a2-c99fe1f84856</localSourceId>';
	xmlString+='<localCatalogId>0c091601-eb5c-4747-85ee-046c358fa0ac</localCatalogId>';
	xmlString+='<tranFileFormat>GDB</tranFileFormat>';
	xmlString+='<sequenceState>VALID</sequenceState>';
	xmlString+='<orderIndex>3</orderIndex>';
xmlString+='</TaskinstanceInfo>';


	//TODO 测试数据2
var xml ="";
//xml += '<?xml version="1.0" encoding="UTF-8" ?>';
xml += '<list>';
	xml += '<TaskinstanceActivity name="djd" sex="boy">';
		xml += '<pkid>62</pkid>';
		xml += '<!-- 任务实例ID -->';
		xml += '<taskinstanceId>1</taskinstanceId>';
		xml += '<!-- 任务类型-->';
		xml += '<taskType>EXCHANGENODEUPLOADxml</taskType>';
		xml += '<!-- 交换节点ID -->';
		xml += '<exchangeNodeId>3</exchangeNodeId>';
		xml += '<!-- 活动状态 -->';
		xml += '<activityStatus>DOWNLOAD_RECEIVEBROADCAST</activityStatus>';
		xml += '<!-- 处理人员ID -->';
		xml += '<userId  name="djd" sex="boy">43</userId>';
		xml += '<!-- 处理人员名称 -->';
		xml += '<userName><son><sex>boy</sex><age>23</age></son></userName>';
		xml += '<!-- 处理信息 -->';
		xml += '<processInfo>数据上传任务启动</processInfo>';
		xml += '<!-- 消息方向 -->';
		xml += '<messageDirection>EXCHANGENODE2CENTER</messageDirection>';
		xml += '<!-- 任务活动类型 -->';
		xml += '<activityType>BUSINESS</activityType>';
		xml += '<!-- 活动创建时间 -->';
		xml += '<activityDate>2012-07-14 21:12:00.0 CST</activityDate>';
		xml += '<!-- 消息体,消息体内容未示例,不代表真实数据 -->';
		xml += '<messageBody>{id:1, name: "Tite"}</messageBody>';
		xml += '<!-- 该流程是否成功执行, true表示成功, false表示失败 -->';
		xml += '<activitySucceed>true</activitySucceed>';
		xml += '<!-- 状态,VALID(有效),INVALID(无效) -->';
		xml += '<sequenceState>bbbbbbbbbbb</sequenceState>';
		xml += '<!-- 序号 -->';
		xml += '<orderIndex>aaaaaaaaaaaaa</orderIndex>';
	xml += '</TaskinstanceActivity>';
	xml += '<TaskinstanceActivity name="djd" sex="boy">';
		xml += '<messageDirection>AAAAAAAAAA</messageDirection>';
		xml += '<messageBody  name="djd" sex="boy">BBBBBBBBB</messageBody>';
		xml += '<activitySucceed>CCCCCCCC</activitySucceed>';
		xml += '<sequenceState>DDdddddddd</sequenceState>';
		xml += '<orderIndex>EEEEEEEEEEEEe</orderIndex>';
	xml += '</TaskinstanceActivity>';
xml += '</list>';


	var domObj2 = createXmlDOM(xmlString);
	JSLogger.logXML(domObj2);

	var domObj = createXmlDOM(xml);
	JSLogger.logXML(domObj);

	var first = domObj.getElementsByTagName("TaskinstanceActivity")[0];
	JSLogger.log(first);
	
	var first1 = domObj.getElementsByTagName("TaskinstanceActivity")[0];
	JSLogger.logXML(first1);
 

 

 

 

 

 

附件图片是效果图:上部分是打印XML的结构,下半部是打印XML文档的全部内容。

 

rar附件是演示的源码。

 

 

 

 

 

 

 

 

 

愤怒的coder - XML是王道。

 

  • 大小: 27.7 KB
分享到:
评论
2 楼 July01 2017-09-27  

最近了解到一款StratoIO打印控件,
功能如下:1、Html友好的打印方式
2、兼容主流浏览器
3、灵活配置的任务
4、交互式打印支持
5、丰富的管理面板和接口
6、个性化服务
浏览器和系统的兼容性都很好,而且不会崩溃。参考http://webprint.stratoio.com/features
1 楼 walnutprince 2013-10-29  
别的没看,楼主写的xml转化为string方法有问题,至少在170行和180行之间有问题.我就自己写了个xml2string方法.没有进行细节处理,如if应该是else if等
function xml2string(e)
{
var ret = "";
//e is document,nodeType = 9
if(e.nodeType == 9)
{
var root = e.documentElement;
ret = xml2string(root);
}
// e is Comment nodeType=8
if(e.nodeType ==
{
ret = "<!-- "+e.nodeValue+" -->"
}
// e is textNode nodeType=3
if(e.nodeType == 3)
{
ret = e.nodeValue;
}
// e is element nodeType=1
if(e.nodeType == 1)
{
// myself
ret = "<"+e.nodeName;
// attributes
var atts = e.attributes;
for(var i=0;i<atts.length;i++)
{
ret += " "+xml2string(atts[i]);
}
ret +=">"
// children
var ch = e.childNodes;
for(var i=0;i<ch.length;i++)
{
ret += xml2string(ch[i]);
}
// myself
ret += "</"+e.nodeName+">"
}
// e is attribute nodeType=2
if(e.nodeType == 2)
{
return e.nodeName+'="'+e.nodeValue+'"';
}
return ret;
}

相关推荐

    程序天下:JavaScript实例自学手册

    9.9 JavaScript遍历table的行和列 9.10 表格按回车自动生成新行 9.11 单击单元格背景变色 9.12 单击表格某行后其他行隐藏 9.13 单击表头实现表格排序 9.14 单击单元格显示行的详细信息 9.15 表格设置为“100%”时...

    《程序天下:JavaScript实例自学手册》光盘源码

    9.9 JavaScript遍历table的行和列 9.10 表格按回车自动生成新行 9.11 单击单元格背景变色 9.12 单击表格某行后其他行隐藏 9.13 单击表头实现表格排序 9.14 单击单元格显示行的详细信息 9.15 表格设置为“100%”时...

    ASP200问.EXE

    145.如何通过XMLDom在服务器端操作XML文件(示例二) 146.如何使用XML实现不刷新页面查询数据库 147.如何把HTML表单提交的数据转化成XML文件(第一步) 147.如何把HTML表单提交的数据转化成XML文件(第二步) 148....

    ActionScript开发人员指南中文版

    第章:处理AIR运行时和操作系统信息 管理文件关联 获取运行时版本和修补级别 检测AIR功能 跟踪用户当前状态 第章:使用AIR本机窗口 AIR中的本机窗口的基础知识 创建窗口 管理窗口 侦听窗口事件 显示全屏窗口 第章:AIR...

    JavaScript网页特效范例宝典源码

    实例062 遍历多选择下拉列表 105 实例063 在下拉列表中进行多选移除 106 实例064 将数组中的数据添加到下拉菜单中 107 实例065 应用下拉菜单选择所要联机的网站 108 实例066 多级级联菜单 110 实例067 可以输入文字...

    韩顺平PHP JS JQUERY 所有视频下载种子 货真价实

    10-26 4 jquery对象集合遍历的四种形式及练习题讲解 jquery的dom操作 10-27 1课程回顾 10-27 2 jquery的dom操作 内部插入 外部插入 10-27 3 jquery节点操作 10-27 4 练习题讲解 10-27 5 jquery属性操作 获取子元素和...

    史上最全韩顺平传智播客PHP就业班视频,10月份全集

    10-26 4 jquery对象集合遍历的四种形式及练习题讲解 jquery的dom操作 10-27 1课程回顾 10-27 2 jquery的dom操作 内部插入 外部插入 10-27 3 jquery节点操作 10-27 4 练习题讲解 10-27 5 jquery属性操作 获取子元素和...

    史上最全传智播客PHP就业班视频课,8月份视频

    10-26 4 jquery对象集合遍历的四种形式及练习题讲解 jquery的dom操作 10-27 1课程回顾 10-27 2 jquery的dom操作 内部插入 外部插入 10-27 3 jquery节点操作 10-27 4 练习题讲解 10-27 5 jquery属性操作 获取子元素和...

    史上最全韩顺平传智播客PHP就业班视频,9月份全集

    10-26 4 jquery对象集合遍历的四种形式及练习题讲解 jquery的dom操作 10-27 1课程回顾 10-27 2 jquery的dom操作 内部插入 外部插入 10-27 3 jquery节点操作 10-27 4 练习题讲解 10-27 5 jquery属性操作 获取子元素和...

    (全)传智播客PHP就业班视频完整课程

    10-26 4 jquery对象集合遍历的四种形式及练习题讲解 jquery的dom操作 10-27 1课程回顾 10-27 2 jquery的dom操作 内部插入 外部插入 10-27 3 jquery节点操作 10-27 4 练习题讲解 10-27 5 jquery属性操作 获取子元素和...

    vc++ 应用源码包_1

    DOM应用---遍历网页中的元素 dshowplayer 媒体播放器的实现,实现了VMR7、VMR9、EVR方式。 DSoundManager 实现了声音管理。 Excel文件的导入和导出操作 主要的实现在CMyExcel类中。 expclass_src dll库的演示。 ...

    vc++ 应用源码包_2

    DOM应用---遍历网页中的元素 dshowplayer 媒体播放器的实现,实现了VMR7、VMR9、EVR方式。 DSoundManager 实现了声音管理。 Excel文件的导入和导出操作 主要的实现在CMyExcel类中。 expclass_src dll库的演示。 ...

    vc++ 应用源码包_6

    DOM应用---遍历网页中的元素 dshowplayer 媒体播放器的实现,实现了VMR7、VMR9、EVR方式。 DSoundManager 实现了声音管理。 Excel文件的导入和导出操作 主要的实现在CMyExcel类中。 expclass_src dll库的演示。 ...

    vc++ 应用源码包_5

    DOM应用---遍历网页中的元素 dshowplayer 媒体播放器的实现,实现了VMR7、VMR9、EVR方式。 DSoundManager 实现了声音管理。 Excel文件的导入和导出操作 主要的实现在CMyExcel类中。 expclass_src dll库的演示。 ...

    vc++ 应用源码包_3

    DOM应用---遍历网页中的元素 dshowplayer 媒体播放器的实现,实现了VMR7、VMR9、EVR方式。 DSoundManager 实现了声音管理。 Excel文件的导入和导出操作 主要的实现在CMyExcel类中。 expclass_src dll库的演示。 ...

    vc++ 开发实例源码包

    DOM应用---遍历网页中的元素 如题。 dshowplayer 媒体播放器的实现,实现了VMR7、VMR9、EVR方式。 DSoundManager 实现了声音管理。 Excel文件的导入和导出操作 如题。主要的实现在CMyExcel类中。 expclass_src ...

    超实用的jQuery代码段

    超实用的jQuery代码段精选近350个jQuery代码段,涵盖页面开发中绝大多数要点、技巧与方法,堪称史上最实用的jQuery代码参考书,可以视为网页设计与网站建设人员的好帮手。...11.32 使用jQuery操作DOM的限制

    精易模块[源码] V5.15

    4、修复“网页_打印”,无效的BUG,感谢易友【@nameyypx】反馈。 5、修复“时间_取身份证判断”出现17位身份证的BUG,感谢易友【@求其改个名】反馈。 6、新增“类_托盘”类模块,源码来自彗星托盘图标模块,感谢源...

Global site tag (gtag.js) - Google Analytics