`
v5browser
  • 浏览: 1138655 次
社区版块
存档分类
最新评论

node.js解析xml(xmlreader)

 
阅读更多

Email:longsu2010 at yeah dot net

xml作为一种重要的数据交换格式,我就不相信没人用node.js解析过它。我就随便搜索了一下,果然很多,什么把xml转成json啊,等等吧。我看了下,xmlreader这个模块比较简单,功能上满足我的需求。

使用方法简介如下:

1、安装。npm install xmlreader

2、使用。看代码

var xmlreader = require("xmlreader");
var fs = require("fs");

var xml_string = '<response id="1" shop="aldi">'
			+ 		'This is some other content'
			+		'<who name="james">James May</who>'
			+ 		'<who name="sam">'
			+			'Sam Decrock'
			+			'<location>Belgium</location>'
			+		'</who>'
			+ 		'<who name="jack">Jack Johnsen</who>'
			+		'<games age="6">'
			+			'<game>Some great game</game>'
			+			'<game>Some other great game</game>'
			+		'</games>'
			+		'<note>These are some notes</note>'
			+	'</response>';


xmlreader.read(xml_string, function(errors, response){
	if(null !== errors ){
		console.log(errors)
		return;
	}
	console.log( response.response );
	console.log( response.response.text() );
});


没啥新奇的,看看输出吧

第一句输出结果为:

{
	attributes : [Function],
	parent : [Function],
	count : [Function],
	at : [Function],
	each : [Function],
	text : [Function],
	who : {
		array : [[Object], [Object], [Object]],
		count : [Function],
		at : [Function],
		each : [Function]
	},
	games : {
		attributes : [Function],
		parent : [Function],
		count : [Function],
		at : [Function],
		each : [Function],
		game : {
			array : [Object],
			count : [Function],
			at : [Function],
			each : [Function]
		}
	},
	note : {
		attributes : [Function],
		parent : [Function],
		count : [Function],
		at : [Function],
		each : [Function],
		text : [Function]
	}
}

第二句输出:

This is some other content


根据输出我们就可以猜这东西是怎么回事儿了。

1、xmlreader将xml转换为JSON对象(这样表述不准确,但是大家知道怎么一回事儿)。

2、转换成的JSON对象的嵌套结构与原xml标签嵌套结构相同。

3、视xml中同一级别出现某标签次数不同(一次和多次)生出不同的对应对象,如上的node为一次,who为三次。

4、提供了一下函数供操作属性或者遍历等等。


各方法含义:

1、attributes:获取所有属性。

2、parent:获取父节点。

3、count:获取数目。

4、at:获取下标为指定值的节点。

5、each:遍历,参数为一个函数。

6、text:获取节点内的文本,仅当前节点的文本,不包含子节点的文本。




分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics