nodejs实现解析xml字符串为对象的方法示例


Posted in NodeJs onMarch 14, 2018

本文实例讲述了nodejs实现解析xml字符串为对象的方法。分享给大家供大家参考,具体如下:

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

NodeJs 相关文章推荐
Nodejs Post请求报socket hang up错误的解决办法
Sep 25 NodeJs
nodejs中操作mysql数据库示例
Dec 20 NodeJs
Nodejs Express4.x开发框架随手笔记
Nov 23 NodeJs
Nodejs抓取html页面内容(推荐)
Aug 11 NodeJs
nodeJs链接Mysql做增删改查的简单操作
Feb 04 NodeJs
Nodejs模块载入运行原理
Feb 23 NodeJs
nodejs爬虫初试superagent和cheerio
Mar 05 NodeJs
NodeJS 实现多语言的示例代码
Sep 11 NodeJs
Nodejs对postgresql基本操作的封装方法
Feb 20 NodeJs
Nodejs中使用puppeteer控制浏览器中视频播放功能
Aug 26 NodeJs
Nodejs 数组的队列以及forEach的应用详解
Feb 25 NodeJs
使用 Koa + TS + ESLlint 搭建node服务器的过程详解
May 30 NodeJs
nodejs acl的用户权限管理详解
Mar 14 #NodeJs
nodejs爬虫初试superagent和cheerio
Mar 05 #NodeJs
Nodejs模块载入运行原理
Feb 23 #NodeJs
Nodejs下使用gm圆形裁剪并合成图片的示例
Feb 22 #NodeJs
nodejs微信扫码支付功能实现
Feb 17 #NodeJs
nodejs+express搭建多人聊天室步骤
Feb 12 #NodeJs
nodeJs实现基于连接池连接mysql的方法示例
Feb 10 #NodeJs
You might like
PHP+DBM的同学录程序(4)
2006/10/09 PHP
QueryPath PHP 中的jQuery
2010/04/11 PHP
深入理解curl类,可用于模拟get,post和curl下载
2013/06/08 PHP
PHP的RSA加密解密方法以及开发接口使用
2018/02/11 PHP
PHP数组访问常用方法解析
2020/09/05 PHP
js 实现无缝滚动 兼容IE和FF
2009/07/15 Javascript
jquery1.4 教程二 ajax方法的改进
2010/02/25 Javascript
基于JQuery制作的产品广告效果
2010/12/08 Javascript
Extjs4中的分页应用结合前后台
2013/12/13 Javascript
NodeJS制作爬虫全过程(续)
2014/12/22 NodeJs
NodeJS的Promise的用法解析
2016/05/05 NodeJs
jQuery模拟淘宝购物车功能
2017/02/27 Javascript
JS如何设置元素样式的方法示例
2017/08/28 Javascript
vue 中滚动条始终定位在底部的方法
2018/09/03 Javascript
JS函数节流和防抖之间的区分和实现详解
2019/01/11 Javascript
vue中img src 动态加载本地json的图片路径写法
2019/04/25 Javascript
Vue 实现html中根据类型显示内容
2019/10/28 Javascript
JavaScript实现手机号码 3-4-4格式并控制新增和删除时光标的位置
2020/06/02 Javascript
在实例中重学JavaScript事件循环
2020/12/03 Javascript
python thread 并发且顺序运行示例
2009/04/09 Python
OpenCV实现人脸识别
2017/04/07 Python
解决python3 HTMLTestRunner测试报告中文乱码的问题
2018/12/17 Python
python开发入门——列表生成式
2020/09/03 Python
CSS3中background-clip和background-origin的区别示例介绍
2014/03/10 HTML / CSS
HTML5里autofocus自动聚焦属性使用介绍
2016/06/22 HTML / CSS
Dockers鞋官网:Dockers Shoes
2018/11/13 全球购物
物业保安主管岗位职责
2013/12/25 职场文书
2014广电局实施党的群众路线教育实践活动方案思想汇报
2014/09/22 职场文书
2014业务员年终工作总结
2014/12/09 职场文书
2015年办公室个人工作总结
2015/04/20 职场文书
社区艾滋病宣传活动总结
2015/05/07 职场文书
队列队形口号
2015/12/25 职场文书
个人销售励志奋斗口号
2019/12/05 职场文书
详解PHP Swoole与TCP三次握手
2021/05/27 PHP
利用Python读取微信朋友圈的多种方法总结
2021/08/23 Python
vue postcss-px2rem 自适应布局
2022/05/15 Vue.js