小姜哥的微信

node.js解析xml(xmlreader)

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">'

+          &#39;This  is  some  other  content&#39;
+        &#39;&lt;who  name=&quot;james&quot;&gt;James  May&lt;/who&gt;&#39;
+          &#39;&lt;who  name=&quot;sam&quot;&gt;&#39;
+            &#39;Sam  Decrock&#39;
+            &#39;&lt;location&gt;Belgium&lt;/location&gt;&#39;
+        &#39;&lt;/who&gt;&#39;
+          &#39;&lt;who  name=&quot;jack&quot;&gt;Jack  Johnsen&lt;/who&gt;&#39;
+        &#39;&lt;games  age=&quot;6&quot;&gt;&#39;
+            &#39;&lt;game&gt;Some  great  game&lt;/game&gt;&#39;
+            &#39;&lt;game&gt;Some  other  great  game&lt;/game&gt;&#39;
+        &#39;&lt;/games&gt;&#39;
+        &#39;&lt;note&gt;These  are  some  notes&lt;/note&gt;&#39;
+    &#39;&lt;/response&gt;&#39;;

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

推荐文章

回到顶部