操控 XML 文档

本文回顾了XML的历史地位,探讨了其在现代技术中的角色,并分享了在实际项目中解析XML节点的方法,特别关注了在浏览器中利用DOM进行解析的方式。文中还对比了XML与JSON的使用场景,强调了XML在配置文件领域的优势。此外,通过实例展示了如何使用JavaScript处理XML数据,包括解析节点、获取属性和文本内容等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

曾记得,最早啃 XML 是 浏览器里面的数据岛,那时还不知道 IE Only,其实无甚价值。

后来工作中也陆陆续续接触 XML 其他方面的应用,但还是比较少。因为现在越来越多人倾向于更简洁的 JSON 格式,XML 自然没落了。当然,采用 XML 作为配置文件还是蛮不错的。

后来的 Java 社区,也推荐大家使用 注解,来代替 XML 文件。

可见,XML 却真是不受待见了哦。

不过,俺觉得,XSLT + XML 还是蛮不错的,况且也是标准。标准的好处就是你会的东西,人家可可能会,越多人会越好——不像现在模板语言各自为营。我第一份工作就是搞 XSLT + XML 的,靠,那时没人跟我说这是干嘛用的,傻乎乎许久之后才知道那是模板!

书归正传,写此文的目的不是叙旧,而是记下关于 XML 使用的一些方法,我把上次商城项目的经验“备份”出来,其中就有解析 XML 节点,在浏览器中 DOM 的解析方式。

$.get('public/service/proxy.jsp', function(xml, requestInstance, xhr){
	if(xml.indexOf('没有对应的查单内容') != -1){
		resultEl.innerHTML = '<br /><br /><br /><center style="color:red;">没有对应的查单内容</center>';
		return;
	}
	var XML = xhr.responseXML;
	var node, nodes = XML.firstChild.childNodes[3].childNodes[1].childNodes;

	var wlObj = {
		运单号 : postid.value,
		承运公司 : comapnyName.value,
		points : []
	};

	for(var i = 0, j = nodes.length; i < j; i++){
		node = nodes[i];
		if(node.nodeType == 1){
			for(var s_XH, /* s 节点下的序号 */ q = 0, p = node.childNodes.length; q < p; q++){
				s_XH = node.childNodes[q], s_zd = s_XH.nextElementSibling;/* s 节点下的字段 */
				if(s_XH.tagName == '序号' && s_zd.textContent != '运输过程'){
					wlObj[s_zd.textContent] = s_zd.nextElementSibling.textContent;
				}else if(s_XH.tagName == '序号' && s_zd.textContent == '运输过程'){
					var date = s_zd.nextElementSibling, content = date ? date.nextElementSibling : null;
					
					if(!content){ // 有时会没有时间
						date = null;
						content = s_zd.nextElementSibling;
					}

					wlObj.points.push({
						date : date && date.textContent ? 
							utils.date_format.call(new Date(date.textContent), "yyyy-MM-dd hh:mm")
							: '',
						content : content ? content.textContent : ''
					});
				}
			}
		}
	}
	if(resultPointTpl){
		var points = Object.create(tpl.renderList);
		points.tpl = resultPointTpl;
		points.data = wlObj.points;
		
		resultEl.innerHTML = tpl.replace(resultTpl, wlObj) + points.apply();
	}else{
		resultEl.innerHTML = tpl.replace(resultTpl, wlObj);
	}
// debugger;		

	showNetpoint(comapnyId.value);
}, {
	webID : comapnyId.value,
	billCode : postid.value
});

比较繁琐。回想起 JSON 的话,完全就是在 JS 中对象 . 号就是读取的了。话说 XML 也有,那就是  EAX 好像,仅 FF 支持。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sp42a

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值