`
accpxudajian
  • 浏览: 458833 次
  • 性别: 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;
}

相关推荐

    jQuery 1.5 遍历xml节点属性

    在JavaScript中,处理XML通常涉及DOM(Document Object Model)接口,而jQuery提供了一套方便的API来操作DOM。 在jQuery 1.5中,遍历XML节点属性主要通过以下方法实现: 1. **jQuery.parseXML()**:这是jQuery提供...

    DOM解析XML 创建XML

    2. **访问XML节点**:加载XML文档后,我们可以通过DOM API访问和操作XML文档中的各个节点。每个节点都有自己的属性,如`nodeName`、`nodeValue`和`childNodes`等。例如,获取根元素可以这样写: ```javascript var...

    xmldom解析

    在这个主题中,“xmldom解析”主要涉及在服务器端和客户端使用DOM解析XML数据的技术。 1. **DOM解析原理**: - DOM解析器将XML文档转化为内存中的树形结构,称为DOM树。每个节点代表XML文档的一部分,如元素、属性...

    遍历网页中的节点 js+html

    在JavaScript中,我们可以使用DOM(Document Object Model)接口来访问和操作这些节点。 1. DOM API:DOM是HTML和XML文档的标准表示,它将文档转化为一个由节点构成的树形结构。JavaScript通过DOM API提供了一系列...

    Jquery操作xml_Demo

    jQuery 是一个轻量级的 JavaScript 库,它提供了方便的 API 来简化 DOM 操作、事件处理和 AJAX 请求,包括对 XML 的处理。 **1. 引入 jQuery** 首先,确保在 HTML 页面中引入了 jQuery 库。通常,这可以通过在 `...

    XML应用开发(软件品牌)-1期 6.3 课堂实践-XML DOM访问节点.doc

    通过这些实践,你可以深入理解DOM模型,学会如何在实际项目中遍历和操作XML文档。DOM允许开发者动态地创建、修改或查询XML文档,是XML应用程序中不可或缺的一部分。在实际开发中,DOM解析器通常与JavaScript、Java、...

    遍历网页中的元

    对于初学者,理解DOM遍历的基本概念至关重要。`EnumFormVal`可能是一个示例程序,用于遍历和提取表单元素的值。表单元素如`&lt;input&gt;`, `&lt;select&gt;`, 和`&lt;textarea&gt;`可以通过`document.forms`访问,然后通过它们的`...

    JavaScript读取xml

    总结,JavaScript通过XMLHttpRequest对象和DOM接口可以方便地读取和操作XML文件。这在Web应用中尤其有用,例如,当需要从服务器获取结构化数据并在客户端进行处理时。了解并熟练掌握这些技术,对于进行富客户端应用...

    使用HTML5canvas和svg从DOM节点生成可打印的分页pdf

    SVG则是另一种矢量图形格式,它支持更复杂的图形和动画,且是XML语法的一部分,易于理解和操作。两者都能在浏览器中生成高质量的图形,适用于生成PDF这样的离线文档。 生成PDF的过程通常涉及以下几个步骤: 1. **...

    dom_xml_demo

    DOM是一种在JavaScript或任何支持它的语言中处理XML文档的标准方式,它允许程序和脚本创建、访问和修改XML文档的结构和内容。 在描述中,同样提到了"dom_xml_demo",这表明这是一个关于如何使用DOM解析XML的实践...

    js从xml取回数据

    当需要在JavaScript中处理XML数据时,可以使用DOM(文档对象模型)来解析和操作XML。 本实例中,“js从xml取回数据”展示了如何使用JS从XML文件中提取数据并将其在网页上展示。以下是一些关键知识点: 1. **XML...

    用DOM-MSXML实现解析xml文件

    在Windows环境中,DOM-MSXML(Microsoft XML Core Services)是一个常用的XML解析库,它提供了强大的功能来解析和操作XML文档。 DOM(Document Object Model)是一种标准的编程接口,用于处理XML和HTML文档。DOM将...

    导出打印嵌套svg网页

    首先,通过DOM遍历获取所有SVG元素,然后使用`canvg`库或者`html2canvas`库将SVG转换为canvas的画布指令,最后调用canvas的`toDataURL`方法生成PNG图片的Base64编码,从而实现网页的导出。 导出为PNG图片时,我们...

    JavaScript程序设计-操作DOM元素的节点及关系.pdf

    DOM元素的节点及关系是JavaScript编程中至关重要的概念,因为它们提供了对页面内容进行查找、修改和操作的基础。 1. 节点类型与属性 `element.nodeType` 属性返回一个整数值,指示节点的类型。常见的类型有: - 1...

    省份城市xml解析js代码

    一旦XML文档被加载并解析为DOM树,我们可以遍历和处理XML节点。假设XML结构如下: ```xml 省份A"&gt; 城市A1 城市A2 省份B"&gt; 城市B1 城市B2 城市B3 &lt;!-- 更多省份... --&gt; ``` 我们可以遍历每个省份和...

    ajax+javascript打印网页数据

    总结来说,使用Ajax和JavaScript,我们可以动态获取和处理服务器数据,然后通过操作DOM显示在网页上,甚至可以进一步实现网页内容的打印。这大大增强了Web应用的交互性和功能,使得用户无需离开当前页面就能获取和...

    JavaScript

    XPath,全称XML Path Language,是一种在XML文档中查找信息的语言。它被广泛应用于JavaScript中,用于选取XML或HTML文档中的...在JavaScript中掌握XPath的用法,能够帮助开发者更好地进行数据提取和页面自动化操作。

    php xml 转json和array

    这段代码展示了如何将XML文件加载为SimpleXMLElement对象,然后通过类型转换将其转化为数组,以便进行遍历和操作。 在提供的压缩包中,有两个PHP文件:`xml2json0.php`和`Xmltoarray.php`。`xml2json0.php`可能是一...

    JS读取XML文件示例代码

    具体来说,如果浏览器支持`ActiveXObject`对象,则使用`Microsoft.XMLDOM`来解析XML文件。若当前的`document.implementation`提供了`createDocument`方法,则可以使用该方法来创建XML文档对象。如果浏览器不支持上述...

Global site tag (gtag.js) - Google Analytics