余晖落尽暮晚霞,黄昏迟暮远山寻
本站
当前位置:网站首页 > 编程知识 > 正文

JavaScript中装载XML文档(javascript解析xml)

xiyangw 2022-11-25 11:37 34 浏览 0 评论

IE和FierFox浏览器对于这装载同域的XML文件和装载XML字符串这两种情况,分别有各自的处理方式。IE的解析器支持XML文件和XML字符串的加载,而火狐浏览器使用单独的解析器把XML载入内存,然后转换为可通过JS访问的XML DOM对象。

以下是js代码:

/* 
 * 封装IE和Firefox类浏览器中装载同域XML或XML字符串的方法,
 * @param flag true表示装载XML的文件,false表示装载XML的字符串
 * @param xmldoc flag为true表示XML文件的路径,flag为false表示XML字符串
 */
 
function loadXML(flag,xmldoc){
 if(window.activeXObject) {
 //IE浏览器
 //创建空的XML对象
 var activexName = ["MSXML2.DOMDdcument","Miscrosoft.XmlDom"];
 var xmlObj;
 for(var i = 0; i < actviexName.length;i++){
 try{
 xmlObj = new ActiveXObject(activeName[i]);
 break;
 }catch(e){
 
 }
 }
 if(xmlObj){
 //同步方式装载XML数据,确保在文档完全加载之前解析器不会继续脚本的执行
 xmlObj.async = false;
 if(flag){
 //load用于加载文件,loadXML用于加载字符串
 //装载XML文件
 xmlObj.load(xmldoc);
 }else{
 //装载XML的字符串
 xmlObj.loadXML(xmldoc);
 }
 //返回根节点
 return xmlObj;
 //返回根元素节点
 return xmlObj.documentElement;
 }else{
 alert("装载XML文档的对象创建失败");
 return null;
 }
 }else if(document.implementation.creatDocument){
 //针对Firefox类浏览器
 var xmlObj;
 if(flag){
 //装载XML文件
 //先创建一个空的xml dom对象
 xmlObj = document.implementation.creatDocument("","",null);
 if(xmlObj){
 //同步方式进行装载
 xmlObj.async = false;
 xmlObj.load(xmldoc);
 return xmlObj.documentElement;
 }else{
 alert("装载XML文档的对象创建失败");
 return null;
 }
 }else{
 //装载XML的字符串
 //创建一个dom解析器
 xmlObj = new DOMParser();
 //把xml字符串解析成要返回的dom对象
 var docRoot = xmlObj.parerFromString(xmldoc,"test/xml");
 return docRoot.documentElement;
 }
 }
 alert("装载XML文档的对象创建失败");
 return null;
}

html代码

<html>
 <head>
 <title>TODO supply a title</title>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <script type="text/javascript" src="load.js"></script>
 <script type="text/javascript">
 function test(){
 //装载同域的XML文件
 var domxml1 = loadXML(true,"test.xml");
 //装载XML字符串
 var domxml2 = loadXML(true,"<xml>123</xml>");
 alert("");
 }
 </script>
 </head>
 <body>
 <input type="button" value="test" onclick="test()"/>
 </body>
</html>

XML页内容

<?xml version="1.0" encoding="UTF-8"?>
<root>
 木子松就是我,我就是木子松
</root>

总结

对于装载同域的XML文件,IE浏览器和火狐类浏览器都是先创建一个空的XML文档对象,然后用“xmlDoc.load(“**.xml”)”告知解析器加载名为**.xml的XML文档

对于装载XML字符串,IE浏览器和装载XML文件的方式一样,利用微软内建的解析器加载XML字符串;而火狐类浏览器,则是通过"var parser = new DOMParser()"创建dom解析器,然后利用方法parserFromString()加载 XML字符串。另外DOMParser对象的load()方法可用于加载文件。

跨域访问处于安全方面的原因,现在的浏览器不允许跨域访问。如果想跨域访问,则必须把XML文件放到自己的服务器上,否则,xmlDoc.load()将产生错误“Access is denied”。

相关推荐

辞旧迎新,新手使用Containerd时的几点须知

相信大家在2020年岁末都被Kubernetes即将抛弃Docker的消息刷屏了。事实上作为接替Docker运行时的Containerd在早在Kubernetes1.7时就能直接与Kubelet集成使...

分布式日志系统ELK+skywalking分布式链路完整搭建流程

开头在分布式系统中,日志跟踪是一件很令程序员头疼的问题,在遇到生产问题时,如果是多节点需要打开多节点服务器去跟踪问题,如果下游也是多节点且调用多个服务,那就更麻烦,再者,如果没有分布式链路,在生产日志...

Linux用户和用户组管理

1、用户账户概述-AAA介绍AAA指的是Authentication、Authorization、Accounting,即认证、授权和审计。?认证:验证用户是否可以获得权限,是3A的第一步,即验证身份...

linux查看最后N条日志

其实很简单,只需要用到tail这个命令tail-100catalina.out输入以上命令,就能列出catalina.out的最后100行。...

解决linux系统日志时间错误的问题

今天发现一台虚拟机下的系统日志:/var/log/messages,文件时间戳不对,跟正常时间差了12个小时。按网上说的执行了servicersyslogrestart重启syslog服务,还是不...

全程软件测试(六十二):软件测试工作如何运用Linux—读书笔记

从事过软件测试的小伙们就会明白会使用Linux是多么重要的一件事,工作时需要用到,面试时会被问到,简历中需要写到。对于软件测试人员来说,不需要你多么熟练使用Linux所有命令,也不需要你对Linux...

Linux运维之为Nginx添加错误日志(error_log)配置

Nginx错误日志信息介绍配置记录Nginx的错误信息是调试Nginx服务的重要手段,属于核心功能模块(nginx_core_module)的参数,该参数名字为error_log,可以放在不同的虚机主...

Linux使用swatchdog实时监控日志文件的变化

1.前言本教程主要讲解在Linux系统中如何使用swatchdog实时监控日志文件的变化。swatchdog(SimpleWATCHDOG)是一个简单的Perl脚本,用于监视类Unix系统(比如...

syslog服务详解

背景:需求来自于一个客户想将服务器的日志转发到自己的日志服务器上,所以希望我们能提供这个转发的功能,同时还要满足syslog协议。1什么是syslog服务1.1syslog标准协议如下图这里的fa...

linux日志文件的管理、备份及日志服务器的搭建

日志文件存放目录:/var/log[root@xinglog]#cd/var/log[root@xinglog]#lsmessages:系统日志secure:登录日志———————————...

运维之日志管理简介

日志简介在运维过程中,日志是必不可少的东西,通过日志可以快速发现问题所在。日志分类日志分类,对不同的日志进行不同维度的分析。操作系统日志操作系统是基础,应用都是在其之上;操作系统日志的分析,可以反馈出...

Apache Log4j 爆核弹级漏洞,Spring Boot 默认日志框架就能完美躲过

这两天沸沸扬扬的Log4j2漏洞门事件炒得热火朝天:突发!ApacheLog4j2报核弹级漏洞。。赶紧修复!!|Java技术栈|Java|SpringBoot|Spring...

Linux服务器存在大量log日志,如何快速定位错误?

来源:blog.csdn.net/nan1996jiang/articlep/details/109550303针对大量log日志快速定位错误地方tail/head简单命令使用:附加针对大量log日志...

Linux中查看日志文件的正确姿势,求你别tail走天下了!

作为一个后端开发工程师,在Linux中查看查看文件内容是基本操作了。尤其是通常要分析日志文件排查问题,那么我们应该如何正确打开日志文件呢?对于我这种小菜鸡来说,第一反应就是cat,tail,vi(或...

分享几款常用的付费日志系统,献给迷茫的你!

概述在前一篇文章中,我们分享了几款免费的日志服务器。他们各有各的特点,但是大家有不同的需求,有时免费的服务器不能满足大家的需要,下面推荐几款付费的日志服务器。1.Nagios日志服务器Nagio...

取消回复欢迎 发表评论: