当前位置:编程学习 > XML/UML >>

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:获取节点内的文本,仅当前节点的文本,不包含子节点的文本。

 

 

 

补充:web前端 , JavaScript ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,