本篇文章基于W3C而写

在Firefox及其他浏览器中的XML解析器(除IE)

var xmlDoc=document.implementation.createDocument("","",null);
xmlDoc.async="false";
xmlDoc.load("note.xml");

第一行:创建一个空的 XML 文档对象。

第二行:关闭异步加载,确保在文档完全加载之前解析器不会继续脚本的执行。

第三行:告知解析器加载名为 "note.xml" 的 XML 文档。

解析完成后,就可以通过DOM树来访问XML里面的元素。

比如我们现在有一个XML:

<?xml version="1.0" encoding="UTF-8"?>
<information name='ghtt'>
<person>
<name>hsrshm</name>
<sex>male</sex>
<birth>
<year>1999</year>
<month>12</month>
<day>19</day>
</birth>
</person>
<person>
<name>wx</name>
<sex>male</sex>
<birth>
<month>9</month>
<day>5</day>
</birth>
</person>
<person>
<name>zyy</name>
<sex>male</sex>
<birth>
<month>5</month>
<day>20</day>
</birth>
</person>
<person>
<name>wj</name>
<sex>male</sex>
<birth>
<year>2000</year>
<month>11</month>
<day>29</day>
</birth>
</person>
<person>
<name>bl</name>
<sex>female</sex>
<birth>
<year>2002</year>
<month>2</month>
<day>17</day>
</birth>
</person>
<person>
<name>jf</name>
<sex>female</sex>
<birth>
<year>2002</year>
<month>5</month>
<day>25</day>
</birth>
</person>
</information>

现在我们要在html中读取他们的信息

如法炮制,我写出了如下代码:

var xmlDoc=document.implementation.createDocument("","",null);
xmlDoc.async="false";
xmlDoc.load("/xml/mingdan.xml");

但是在chrome浏览器中打开后 提示如下错误:

Uncaught TypeError: xmlDoc.load is not a function

???

换火狐试试,还是没用

在网上我也没找到有关这个问题的解决方法,但是,W3C给我们了另一个方式:$XMLHttpRequest$

这个东西是在后台和服务器交换数据用的,即可以读取服务器里的xml,因此,我们稍微改一改就可以用它来读取本地的xml

代码如下:

if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET","xml/mingdan.xml",false);//第二个空填xml文件的本地目录
xmlhttp.send();
xmlDoc=xmlhttp.responseXML;

成功读取xml后,显示东西就很简单啦,下面是我所写的一个例子:读取上面的那个xml并显示每个人的名字,性别,生日(没有年份的要特判)

这是代码:

<html>
<head>
<meta charset="UTF-8">
<title>解析xml</title>
<script type="text/javascript">
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET",'xml/mingdan.xml',false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML;
x=xmlDoc.getElementsByTagName("person");
i=0;
//console.log(i);
function display()
{
console.log(i);
//document.write("begin");
name=(x[i].getElementsByTagName("name")[0].childNodes[0].nodeValue);
//document.write(name);
sex=(x[i].getElementsByTagName("sex")[0].childNodes[0].nodeValue);
birthYear=null;
if (x[i].getElementsByTagName("year")[0]!=null)
birthYear=x[i].getElementsByTagName("year")[0].childNodes[0].nodeValue;
birthMonth=(x[i].getElementsByTagName("month")[0].childNodes[0].nodeValue);
birthDay=(x[i].getElementsByTagName("day")[0].childNodes[0].nodeValue);
txt="NAME: "+name+"<br />SEX:"+sex+"<br />BIRTH:";
if (birthYear!=null) txt=txt+birthYear+"/";
txt=txt+birthMonth+"/"+birthDay+"<br /><br />";
//console.log(x[i]);
document.write(txt);
}
</script>
</head>
<body>
<div>
<script>
//display();
for (i=0;i<x.length;i++)
display();
</script>
</div>
</body>
</html>

今天才发现原来console.log 不仅可以用在小程序里调试,还可以用在这

PS:chrome默认是无法读取本地文件的,需要在chrome快捷方式-目标里加上如下一段代码才能正常运行

--enable-webgl --ignore-gpu-blacklist --allow-file-access-from-files

XML学习笔记——关于XML解析器的更多相关文章

  1. XML学习笔记之XML的简介

    最近,自学了一段时间xml,希望通过学习笔记的整理能够巩固一下知识点,也希望把知识分享给你们(描红字段为重点): XML(extensible Markup language):可扩展的标记语言,解决 ...

  2. XML学习笔记(1)--XML概述

    XML基本概念 XML—extensible Markup Language(可扩展标记语言) XML最基本的三个概念 1)XML语言---描述事物本身(可扩展) 2)XSL语言---展现事物表现形式 ...

  3. XML学习笔记

    XML学习笔记 第一部分:XML简介 我们经常可以听到XML.HTML.XHTML这些语言,后两者比较清楚,一直不是很明白XML是什么,这里做一个总结. XML(eXtensible Markup L ...

  4. day0203 XML 学习笔记

    day02, 03 1. xml语言和作用 2. xml语法详解 2.1 xml 语法声明 2.1.1 encoding 属性 2.1.2 standalone 属性 2.2 xml 元素(Eleme ...

  5. delphi操作xml学习笔记 之一 入门必读

    Delphi 对XML的支持---TXMLDocument类       Delphi7 支持对XML文档的操作,可以通过TXMLDocument类来实现对XML文档的读写.可以利用TXMLDocum ...

  6. 学习SpringMVC——说说视图解析器

    各位前排的,后排的,都不要走,咱趁热打铁,就这一股劲我们今天来说说spring mvc的视图解析器(不要抢,都有位子~~~) 相信大家在昨天那篇如何获取请求参数篇中都已经领略到了spring mvc注 ...

  7. XML学习总结(二)——XML入门

    XML学习总结(二)——XML入门 一.XML语法学习 学习XML语法的目的就是编写XML 一个XML文件分为如下几部分内容: 文档声明 元素 属性 注释 CDATA区 .特殊字符 处理指令(proc ...

  8. ArcGIS案例学习笔记2_2_模型构建器和山顶点提取批处理

    ArcGIS案例学习笔记2_2_模型构建器和山顶点提取批处理 计划时间:第二天下午 背景:数据量大,工程大 目的:自动化,批处理,定制业务流程,不写程序 教程:Pdf/343 数据:chap8/ex5 ...

  9. SpringBoot学习笔记:自定义拦截器

    SpringBoot学习笔记:自定义拦截器 快速开始 拦截器类似于过滤器,但是拦截器提供更精细的的控制能力,它可以在一个请求过程中的两个节点进行拦截: 在请求发送到Controller之前 在响应发送 ...

随机推荐

  1. js 的this指向问题

    this指向的,永远只可能是对象! this指向谁,永远不取决于this写在哪!而是取决于函数在哪调用. this指向的对象,我们称之为函数的上下文context,也叫函数的调用者. 1:通过函数名直 ...

  2. vue-learning:12-1- HTML5的<template>内容模板元素

    HTML5的<template>内容模板元素 HTML内容模板<template>元素将它其中的内容存储在页面文档中,以供后续使用,该内容的DOM结构在加载页面时会被解析器处理 ...

  3. VisualStudio 2019 新特性

    很多小伙伴都好奇 VisualStudio 2019 有哪些功能,下面让我介绍一些好玩的特性 在安装完成之后会看到创新的欢迎界面,这个欢迎界面支持输入关键字搜项目,同时支持选择语言平台 很多小伙伴都说 ...

  4. 使用FluentEmail发送outlook邮件

    一,邮箱账号相关设置 1,创建outLook邮箱. 2,进入邮箱设置->同步电子邮件->允许设备和应用使用pop 3,设置microsoft账号的应用程序密码->进入安全性页面-&g ...

  5. windows添加右键菜单

    哔哔 有时候想要用websotrm打开一个项目, 有时候想要用VScode打开,最快的方法就是右键指定打开方式了 这些软件安装的时候会自带,但如果有些软件没有自带右键项,就得去注册表里手动添加 这些东 ...

  6. ML基础——搜索引擎与图书管理,百度与李彦宏

    本文始发于个人公众号:TechFlow 谈及机器学习,大家想必会有许多联想,比如最近火热的人工智能,再比如战胜李世石的AlphaGo,甚至还会有人联想起骇客帝国或者是机械公敌等经典机器人电影. 但实际 ...

  7. 基于python的分治法和例题

    分治法 分治法的核心 分:将一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题 治:最后的子问题,可以很容易的直接求解 合:所有子问题的解合并起来就是原问题的解 分治法的特征 ...

  8. 假期汇总表handler中涉及的基础知识

    1,stringBuffer 的常用方法,append () 方法, public StringBuffer append(boolean b) 追加内容到当前StringBuffer对象的末尾 ,我 ...

  9. spring boot学习笔记(2)

    Spring boot集成mybatis的三种方式 一.XML文件 在pom文件里面引入mybatis和数据库的依赖 在application.properties中加入数据源配置 其他和ssm配置完 ...

  10. Go和Java的性能对比,真的如此吗?

    前两天我看到了一篇文章,测试Java和Go和Python的性能,其测试内容是一个排序,排序一亿次,然后看那个语言耗时最短,我先贴一下这个文章的测试结果,Java竟然比Go快了一倍不止,Go不是号称接近 ...