javascript把特定XML响应解析成一个对象
相比其他格式,XML极其冗长。每个单独的数据片段都依赖大量结构,所以有效数据的比例非常低。而且XML的语法有些模糊。当把一个数据结构转换成XML时,你应该把对象参数放到对象元素的属性中,还是放在独立的子元素中呢?你应该使用描述清晰的长标签名还是高效但难以辨认的短标签名呢?语法的解析过程同样含混,你必须提前知道XML响应的布局,然后才能弄清楚它的含义。
一般情况下,解析XML需要占用Javascript程序员一部分的精力。除了要提前知道详细结构之外,还必须确切地知道如何解析这个结构并费力地将它重组到Javascript对象中。这既非易事业不能自动完成。
例:
XML结构:
<?xml version="1.0" encoding="UTF-8" ?> <users total="4"><user id="1"><username>alice</username><realname>Alice Smith</realname><email>alice@alicesmith.com</email></user><user id="2"><username>bob</username><realname>Bob Jones</realname><email>bob@bobjones.com</email></user><user id="3"><username id="3"><username>carol</username><realname>Carol Williams</realname><email>Carol@carolwilliams.com</email> </user><user id="4"><username>dave</username><realname>Dave Johnson</realname><email>dave@davejohnson.com</email></user> </users>
Javascript结构:
function parseXML(responseXML){var users = [];var userNodes = responseXML.getElementsByTagName('users');var node,usernameNodes,usernameNode,username,realnameNodes,realnameNode,realname,emailNodes,emailNode,email;for(var i=0,len = userNodes.length;i<len;i++){node = userNodes[i];username = realname = email = "";usernameNodes = node.getElementsByTagName('username');if(usernameNodes && usernameNodes[0]){usernameNode = usernameNodes[0];username = (usernameNodes.firstChild)?usernameNodes.firstChild.nodeValue : "";}realnameNodes = node.getElementsByTagName('realname');if(realnameNodes && realnameNodes[0]){realnameNode = realnameNodes[0];username = (realnameNodes.firstChild)?usernameNodes.firstChild.nodeValue : "";}emailNodes = node.getElementsByTagName('email');if(emailNodes && emailNodes[0]){emailNode = emailNodes[0];email = (emailNodes.firstChild)?emailNodes.firstChild.nodeValue : "";}user[i] = {id:node.getAttributte('id');username:username;realname:realname;email:email;};} return users; }
转载于:https://www.cnblogs.com/joyho/articles/3419738.html
javascript把特定XML响应解析成一个对象相关推荐
- Python3将xml文件解析为Python对象
一.说明 从最开始写javascript开始,我就很烦感使用getElementById()等函数来获取节点的方法,获取了一个节点要访问其子孙节点要么child半天要么就再来一个getElementB ...
- php xml expat,PHP XML Expat 解析器
PHP XML Expat 解析器 内建的 Expat 解析器使在 PHP 中处理 XML 文档成为可能. XML 是什么? XML 用于描述数据,其焦点是数据是什么.XML 文件描述了数据的结构. ...
- javascript 两个数组组成一个对象
javascript 两个数组组成一个对象 <!DOCTYPE html> <html lang="en"><head><meta cha ...
- JavaScript解析XML,js解析xml字符串
XMl 可扩展的文本标记语言,用来传输数据和保存数据 整个文档是一个文档节点 每个XMl标签是一个元素节点 包含在xml标签内的文本是文本节点 每个xml属性是一个属性节点 注释属于一个注释节点XML ...
- Python爬虫高级库之一的lxml库中,ET.parse()是一个非常重要的方法。它可以将任意XML或HTML格式的文档解析成一个ElementTree对象,...
Python爬虫高级库之一的lxml库中,ET.parse()是一个非常重要的方法.它可以将任意XML或HTML格式的文档解析成一个ElementTree对象,方便我们对结构化的数据进行处理和分析.在 ...
- iOS - XML 数据解析
前言 @interface NSXMLParser : NSObjectpublic class NSXMLParser : NSObject 1.XML 数据 XML(Extensible Mark ...
- Android学习笔记之AndroidManifest.xml文件解析(摘自皮狼的博客)
Android学习笔记之AndroidManifest.xml文件解析 一.关于AndroidManifest.xml AndroidManifest.xml 是每个android程序中必须的文件.它 ...
- delphi读取xml中的内容property name传递参数_python3 Json和XML数据解析
一.Json数据解析 Python3 中可以使用 json 模块来对 JSON 数据进行编解码,它包含了两个函数: json.dumps(): 对数据进行编码. json.loads(): 对数据进行 ...
- android基础知识13:AndroidManifest.xml文件解析【转载】
注:本文转载于:http://blog.csdn.NET/xianming01/article/details/7526987 AndroidManifest.xml文件解析. 1.重要性 Andro ...
- jdk 中常用的 xml 数据解析
xml(extensible markup language) 是一种可扩展标记语言,允许用户自定义复杂的数据结构,json(javascript object notation),可以认为是 JS ...
最新文章
- 日媒:中国去年装机量猛增 成最大光伏日媒:中国去年装机量猛增 成最大光伏发电国家发电国家...
- 不同的二叉搜索树-战胜100%的Java用户
- 汉字转拼音缩写的函数以及其他函数
- 数据库-DQL练习(附答案)
- 单片机原理及其应用——单片机控制单个发光二极管实验(附超详细的C51单片机实验教程)
- vscode函数跳转插件_人生苦短,我们为 Cocos Creator 开发的插件和工具
- python抽荣耀水晶_深度分析抽取荣耀水晶的窍门,不良抽法很好用,平均100RMB一颗...
- 默写测试晋级流程 1126
- HALCON标定板简介
- Google 推出移动版任务管理工具 Google Tasks
- 需要做CQC认证的产品栏目列表
- 读书 -- 偷偷暗时间之《暗时间》总结
- JS实现经纬度坐标转成XY坐标
- 无法启动程序,.dll不是有效的Win32应用程序
- 湖南大学工训创新大作业——改进电子音乐
- 力扣刷题day42|121买卖股票的最佳时机、122买卖股票的最佳时机II
- 中国地质大学计算机学院保研率,2020年中国地质大学(北京)保研率是多少
- JAVA版村庄哨塔种子_我的世界:5个奇特且罕见的种子,相邻的哨塔,循环的地形图...
- OpenCV C++案例实战二《生成蒙太奇图像》
- 性能测试领域:你知道的越多,不知道的也就越多
热门文章
- 神剧《切尔诺贝利》引发的技术思考:如何避免下一次核灾难?
- 数据之路 - Python爬虫 - Xpath库
- 你的第一个自动化测试:Selenium 自动化测试
- linux下iptables详解
- 第二章 this全面解析
- threadpool —— 基于 pthread 实现的简单线程池(code)
- Sublime Text 收藏笔记
- 开发落网电台windows phone 8应用的计划(9)
- ionic3 打包错误解决:Could not resolve all files for configuration ':classpath'.
- 为什么 HTTPS 比 HTTP 更安全?