相比其他格式,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响应解析成一个对象相关推荐

  1. Python3将xml文件解析为Python对象

    一.说明 从最开始写javascript开始,我就很烦感使用getElementById()等函数来获取节点的方法,获取了一个节点要访问其子孙节点要么child半天要么就再来一个getElementB ...

  2. php xml expat,PHP XML Expat 解析器

    PHP XML Expat 解析器 内建的 Expat 解析器使在 PHP 中处理 XML 文档成为可能. XML 是什么? XML 用于描述数据,其焦点是数据是什么.XML 文件描述了数据的结构. ...

  3. javascript 两个数组组成一个对象

    javascript 两个数组组成一个对象 <!DOCTYPE html> <html lang="en"><head><meta cha ...

  4. JavaScript解析XML,js解析xml字符串

    XMl 可扩展的文本标记语言,用来传输数据和保存数据 整个文档是一个文档节点 每个XMl标签是一个元素节点 包含在xml标签内的文本是文本节点 每个xml属性是一个属性节点 注释属于一个注释节点XML ...

  5. Python爬虫高级库之一的lxml库中,ET.parse()是一个非常重要的方法。它可以将任意XML或HTML格式的文档解析成一个ElementTree对象,...

    Python爬虫高级库之一的lxml库中,ET.parse()是一个非常重要的方法.它可以将任意XML或HTML格式的文档解析成一个ElementTree对象,方便我们对结构化的数据进行处理和分析.在 ...

  6. iOS - XML 数据解析

    前言 @interface NSXMLParser : NSObjectpublic class NSXMLParser : NSObject 1.XML 数据 XML(Extensible Mark ...

  7. Android学习笔记之AndroidManifest.xml文件解析(摘自皮狼的博客)

    Android学习笔记之AndroidManifest.xml文件解析 一.关于AndroidManifest.xml AndroidManifest.xml 是每个android程序中必须的文件.它 ...

  8. delphi读取xml中的内容property name传递参数_python3 Json和XML数据解析

    一.Json数据解析 Python3 中可以使用 json 模块来对 JSON 数据进行编解码,它包含了两个函数: json.dumps(): 对数据进行编码. json.loads(): 对数据进行 ...

  9. android基础知识13:AndroidManifest.xml文件解析【转载】

    注:本文转载于:http://blog.csdn.NET/xianming01/article/details/7526987 AndroidManifest.xml文件解析. 1.重要性 Andro ...

  10. jdk 中常用的 xml 数据解析

    xml(extensible markup language) 是一种可扩展标记语言,允许用户自定义复杂的数据结构,json(javascript object notation),可以认为是 JS ...

最新文章

  1. 日媒:中国去年装机量猛增 成最大光伏日媒:中国去年装机量猛增 成最大光伏发电国家发电国家...
  2. 不同的二叉搜索树-战胜100%的Java用户
  3. 汉字转拼音缩写的函数以及其他函数
  4. 数据库-DQL练习(附答案)
  5. 单片机原理及其应用——单片机控制单个发光二极管实验(附超详细的C51单片机实验教程)
  6. vscode函数跳转插件_人生苦短,我们为 Cocos Creator 开发的插件和工具
  7. python抽荣耀水晶_深度分析抽取荣耀水晶的窍门,不良抽法很好用,平均100RMB一颗...
  8. 默写测试晋级流程 1126
  9. HALCON标定板简介
  10. Google 推出移动版任务管理工具 Google Tasks
  11. 需要做CQC认证的产品栏目列表
  12. 读书 -- 偷偷暗时间之《暗时间》总结
  13. JS实现经纬度坐标转成XY坐标
  14. 无法启动程序,.dll不是有效的Win32应用程序
  15. 湖南大学工训创新大作业——改进电子音乐
  16. 力扣刷题day42|121买卖股票的最佳时机、122买卖股票的最佳时机II
  17. 中国地质大学计算机学院保研率,2020年中国地质大学(北京)保研率是多少
  18. JAVA版村庄哨塔种子_我的世界:5个奇特且罕见的种子,相邻的哨塔,循环的地形图...
  19. OpenCV C++案例实战二《生成蒙太奇图像》
  20. 性能测试领域:你知道的越多,不知道的也就越多

热门文章

  1. 神剧《切尔诺贝利》引发的技术思考:如何避免下一次核灾难?
  2. 数据之路 - Python爬虫 - Xpath库
  3. 你的第一个自动化测试:Selenium 自动化测试
  4. linux下iptables详解
  5. 第二章 this全面解析
  6. threadpool —— 基于 pthread 实现的简单线程池(code)
  7. Sublime Text 收藏笔记
  8. 开发落网电台windows phone 8应用的计划(9)
  9. ionic3 打包错误解决:Could not resolve all files for configuration ':classpath'.
  10. 为什么 HTTPS 比 HTTP 更安全?