操控 XML 文档

简介: 曾记得,最早啃 XML 是 浏览器里面的数据岛,那时还不知道 IE Only,其实无甚价值。 后来工作中也陆陆续续接触 XML 其他方面的应用,但还是比较少。因为现在越来越多人倾向于更简洁的 JSON 格式,XML 自然没落了。

曾记得,最早啃 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 支持。

目录
相关文章
|
XML 存储 JavaScript
DOM 节点遍历:掌握遍历 XML文档结构和内容的技巧
**XML DOM 遍历、操作和导航概述** - 遍历XML节点树用于提取信息,例如,通过JavaScript的DOM API循环`&lt;book&gt;`子节点显示名称和值。 - DOM解析器处理XML文本数据,包括解析字符数据(PCDATA)和识别CDATA段。 - 节点导航涉及`parentNode`、`childNodes`等属性,`get_nextSibling`等辅助函数避免空文本节点。 - `getElementsByTagName`、`getAttribute`和`nodeValue`用于检索元素、属性值和文本。
163 6
DOM 节点遍历:掌握遍历 XML文档结构和内容的技巧
|
XML 数据格式
hutool将XML文档转换为String
hutool将XML文档转换为String
|
XML 数据采集 存储
使用Java和XPath在XML文档中精准定位数据
在数据驱动的时代,从复杂结构中精确提取信息至关重要。XML被广泛用于数据存储与传输,而XPath则能高效地在这些文档中导航和提取数据。本文深入探讨如何使用Java和XPath精准定位XML文档中的数据,并通过小红书的实际案例进行分析。首先介绍了XML及其挑战,接着阐述了XPath的优势。然后,提出从大型XML文档中自动提取特定产品信息的需求,并通过代理IP技术、设置Cookie和User-Agent以及多线程技术来解决实际网络环境下的数据抓取问题。最后,提供了一个Java示例代码,演示如何集成这些技术以高效地从XML源中抓取数据。
371 7
使用Java和XPath在XML文档中精准定位数据
|
XML JavaScript 前端开发
XML文档节点导航与选择指南
XPath是XSLT的核心部分,用于XML文档的节点定位和选择。它采用路径表达式语法,包含200多个内置函数处理各种数据类型。XPath在编程语言如JavaScript中广泛使用,与XSLT配合进行XML转换和样式处理。它涉及7种节点类型,如元素、属性和文本,以及多种节点间关系,如父、子、同级等。XPath还使用轴(如ancestor、child)来描述节点间的关联,并支持运算符进行逻辑和数学操作。
181 0
XML文档节点导航与选择指南
|
XML 存储 C#
C# xml文档反序列化记事
本文介绍了使用XmlSerializer进行XML序列化和反序列化的关键点。包括:1) 以独占方式读取XML文件以避免并发问题;2) 当元素名与类型名不一致时,可通过`[XmlArrayItem]`指定元素名,或创建继承自原始类型的子类;3) 处理DateTime反序列化错误,通过中间字符串属性转换;4) 提到了常用C#特性如`[XmlRoot]`, `[XmlElement]`, `[XmlAttribute]`, `[XmlIgnore]`和`[XmlArrayItem]`的作用。
151 0
|
XML JavaScript 数据格式
XML Schema(XSD)详解:定义 XML 文档结构合法性的完整指南
XML Schema(XSD)是用于定义XML文档结构的规范,它描述了元素、属性及其顺序、数据类型和约束。与DTD相比,XML Schema支持更多数据类型,如字符串、日期等,并且是基于XML的,允许扩展和重用。学习XML Schema有助于确保数据通信时双方对内容的理解一致,通过验证防止错误。示例展示了如何定义一个`note`元素,包含`to`, `from`, `heading`和`body`子元素,都是字符串类型。XML文档可以通过引用XML Schema进行验证,确保内容符合预设模式。
1188 0
|
XML 存储 数据格式
探索 DTD 在 XML 中的作用及解析:深入理解文档类型定义
DTD(文档类型定义)用于定义XML文档的结构和合法元素、属性。它允许不同团体就数据交换标准达成一致,并用于验证XML数据的有效性。DTD可通过内部声明(在XML文档内)或外部声明(在单独文件中)来定义。内部声明示例显示了如何定义`note`元素及其子元素的结构,而外部声明则引用外部DTD文件。元素、属性、实体和PCDATA/CDATA是XML构建模块。DTD中,元素通过ELEMENT声明定义,属性通过ATTLIST声明定义,实体声明提供特殊字符或外部资源的快捷方式。
228 0
|
XML JavaScript 数据格式
使用Dom4J解析XML文档
XML解析的方式 XML常见的两种解析方式: DOM: 要求解析器将整个XML文件全部加载到内存中,生成一个Document对象 优点:元素和元素之间保留结构、关系,可以针对元素进行增删查改操作 缺点:如果XML文件过大,可能会导致内存溢出 SAX:是一种速度更快,更加高效的解析方式。它是逐行扫描,边扫描边解析,并且以事件驱动的方式来进行具体的解析,每解析一行都会触发一个事件 优点: 不会出现内存溢出的问题,可以处理大文件 缺点:只能读,不能写 概念辨析: 解析器就是根据不同的解析方式提供具体的实现。 为了方便开发人员来解析XML,有一些方便操作的类库。例如Dom4j其中就包含了很多解
184 0
|
XML Java 数据格式
关于使用JAXB读取xml文档转换为java对象出现非法注解异常
关于使用JAXB读取xml文档转换为java对象出现非法注解异常
关于使用JAXB读取xml文档转换为java对象出现非法注解异常
|
XML 存储 消息中间件
Tsung MQTT协议简介及MQTT xml文档配置介绍
Tsung MQTT协议简介及MQTT xml文档配置介绍
289 0