原文作者:aircraft

原文地址:https://www.cnblogs.com/DOMLX/p/7822962.html

解析XML文件遇到的问题

          今天秦博士叫我解析一下XML文件,将里面的所有的X坐标Y坐标放在一个数组里面然后写在文档里让他进行算法比对,大家都知道了啦,解析XML文件获取里面的坐标数据什么的,当然是用前端的JS,JQ之类的来解析比较方便啦。不过我事先都没有做过这些东西,所以只好去百度上面搜索别人的代码来借鉴一下了。

  那么问题就来了,先看这个代码,这个就是通用的创建一个xmlDoc对象的代码了。

 function parseXML(xmlFile){
// 创建解析XML后的DOM对象
var xmlDoc = null;
// 根据不同浏览器进行解析
if(window.DOMParser){
// 其他浏览器
var parser = new DOMParser();
xmlDoc = parser.parseFromString(xmlFile,"application/xml");
}else{
// IE浏览器
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async = false;
xmlDoc.loadXML(xmlFile);
}
return xmlDoc;
}

测试xml文件是这样的,(text.xml)

 <?xml version="1.0" encoding="utf-8" ?>
<DongFang>
<Company>
<cNname>1</cNname>
<cIP>1</cIP>
</Company>
<Company>
<cNname>2</cNname>
<cIP>2</cIP>
</Company>
<Company>
<cNname>3</cNname>
<cIP>3</cIP>
</Company>
</DongFang>

调用的方法

 var xmldoc=parseXML(text.xml);

  var elements = xmlDoc.getElementsByTagName("Company");

  for (var i = 0; i < elements.length; i++) {
var name = elements[i].getElementsByTagName("cNname")[0].firstChild.nodeValue;
var ip = elements[i].getElementsByTagName("cIP")[0].firstChild.nodeValue; }

这个时候如果学过XML解析文件的小伙子们都知道这些代码是没有问题的,测试方式也是极其简单的。跑起来的时候也确实会返回一个document对象.

DOCUMENT对象里面出现的却不是我们要的内容,而是(parsererro),看到了没有。这个时候得到的对象根本不是我们想要的,我们也不能对它进行什么操作。

那么这个代码也没错,调用方式也没有错,为什么会解析不了XML文件 得到我们想要的对象呢?

 嘿嘿嘿, 这是因为目前的主流浏览器都不支持解析本地的XML的文件,应该是为了一些安全问题之类的。反正就是不能够直接的去解析XML了文件了。

  不过因为现在解析文件,传输数据什么的基本都是用json了,所以这个问题很少有人会关注了。

  

  看到这里大家可能就会有些疑惑了,那么我到底是怎么解析XML文件完成任务的呢。。。。

    

  嘿嘿嘿,其实我也不知道怎么直接对文件进行解析,这个浏览器对文件进行保护,但是没有对XML字符串进行保护。我们可以直接将XML文件中的代码用压缩器压缩,然后复制粘贴到parseXML(“ ”);这里面就相当于直接解析了XML文件。这时候就返回了一个由整个XML文件内容组成得字符串对象(也相当于XML文件对象了),这时候我们想对T做什么都可以了,也可以一起做一些做爱做的事噢。

如果上面的没有解决的话 建议可以去看看PYTHON 的解析XML   也是非常简单     花几分钟学一下就行了  其他语法都跟JS很像

PYTHON解析XML文件http://www.cnblogs.com/DOMLX/p/8213442.html

  

大家好我是飞机,是一个想成为全栈工程师的男人。

若有兴趣交流分享技术,可关注本人公众号,里面会不定期的分享各种编程教程,和共享源码,诸如研究分享关于c/c++,python,前端,后端,opencv,halcon,opengl,机器学习深度学习之类有关于基础编程,图像处理和机器视觉开发的知识


 

用js解析XML文件,字符串一些心得的更多相关文章

  1. JS解析XML文件和XML字符串

    JS解析XML文件 <script type='text/javascript'> loadXML = function(xmlFile){ var xmlDoc=null; //判断浏览 ...

  2. 用js(JavaScript-jQuery)解析XML文件 无法成功 获得XML对象,字符串一些心得

    原文作者:aircraft 原文地址:https://www.cnblogs.com/DOMLX/p/7822962.html 解析XML文件遇到的问题 今天秦博士叫我解析一下XML文件,将里面的所有 ...

  3. Ajax实现xml文件数据插入数据库(一)--- 构建解析xml文件的js库

    Ajax实现将xml文件数据插入数据库的过程所涉及到的内容比较多,所以对于该过程的讲解本人打算根据交互的过程将其分为三个部分,第一部分为构建解析xml文件的javascript库,第二部分为ajax与 ...

  4. 使用Java解析XML文件或XML字符串的例子

    转: 使用Java解析XML文件或XML字符串的例子 2017年09月16日 11:36:18 inter_peng 阅读数:4561 标签: JavaXML-Parserdom4j 更多 个人分类: ...

  5. CSS控制XML与通过js解析xml然后通过html显示xml中的数据

    使用CSS控制XML的显示 book.css bookname{ display:block;color:Red} author{ display:block;font-style:italic} p ...

  6. node.js 解析xml BOM问题(xmlreader sax.js)

    Email:longsu2010 at yeah dot net 之前写了两篇文章关于node.js解析xml,说的是xmlreader,文章如下 node.js解析xml(xmlreader) no ...

  7. js操作XML文件兼容IE与FireFox

    最近项目中用到了xml,需求是用户安装产品时先把一系列的数据保存到xml文件中,当执行到最后一步时才写入数据库,这样最大限度的减少了数据库的访问,于是不得不纠结在各浏览器的兼容性的问题(悲哀啊.... ...

  8. JQuery -- Jquery 中的Ajax, Jquery解析xml文件

    1. JQuery 对 Ajax 操作进行了封装,在 jQuery 中最底层的方法时 $.ajax(), 第二层是 load(), $.get() 和 $.post(),第三层是$.getScript ...

  9. JAVA中使用DOM解析XML文件

    XML是一种方便快捷高效的数据保存传输的格式,在JSON广泛使用之前,XML是服务器和客户端之间数据传输的主要方式.因此,需要使用各种方式,解析服务器传送过来的信息,以供使用者查看. JAVA作为一种 ...

随机推荐

  1. css设置黑体宋体等(转)

    代码如下: .selector{ font-family:"Microsoft YaHei",微软雅黑,"MicrosoftJhengHei",华文细黑,STH ...

  2. idea 配置tomcat(包含tomcat Server找不到的配置方法)

    在配置tomcate时有时候按照网上说的找不到tomcat Server,不知不觉花了很长时间这时我们在这里配置就可以了如图所示 1.这是有tomcat Server的配置(后面是没有的情况下的配置) ...

  3. asp.net 自定义的模板方法接口通用类型

    本来想写这个帖子已经很久了,但是公司事情多,做着做着就忘记了.公司因为需要做接口,而且用的还是asp.net的老框架,使用Handler来做,没得办法,自己照着MVC写了一个通过的接口操作模板. 上送 ...

  4. Java的DAO设计模式

    用java的DAO模式实现对一个学生实体的增加,查询操作. 1.建立一个学生实体类 Student.java public class Student { private String sid; pr ...

  5. 15.javaweb XML详解教程

    一.XML语言简介 1,  作用:用于描述和保存现实中具有某种关系的数据,还可以作为软件配置文件,和描述程序模块之间的关系 2,  语法: 首先 先看一个XML文件的组成部分 关于文档声明 Versi ...

  6. 手工搭建基于ABP的框架(2) - 访问数据库

    为了防止不提供原网址的转载,特在这里加上原文链接: http://www.cnblogs.com/skabyy/p/7517397.html 本篇我们实现数据库的访问.我们将实现两种数据库访问方法来访 ...

  7. 网站出现service unavailable的解决方法

    特别提示:本文的教程仅适合采用windows服务器的IIS组件上操作,service unavailable是许多网站会经常遇到的问题,希望对大家有用. 昨天一小段时间网站出现了service una ...

  8. linux系统下手动安装Angular-cli

    安装Angular-cli 背景 由于公司linux服务器没有外网,无法通过npm包管理器直接安装,只能手动安装一个Angular-cli平台环境! 安装步骤 1. 先再linux系统下安装好node ...

  9. Redis使用说明详解

    原博主地址:http://www.cnblogs.com/wangyuyu/p/3786236.html Redis使用详细教程 一.Redis基础部分: 1.redis介绍与安装比mysql快10倍 ...

  10. Linux系列教程(二十三)——Linux的服务管理

    前面我们讲解Linux软件包管理之源码包.脚本安装包时,我们介绍了rpm包和源码包由于安装位置的不同,会对服务的启动造成影响,具体是什么,本篇博客我们来详细介绍. 1.Linux服务管理总览 我们可以 ...