XML 解析器
所有现代浏览器都内建了供读取和操作 XML 的 XML 解析器。
解析器把 XML 转换为 XML DOM 对象 - 可通过 JavaScript 操作的对象。
解析 XML 文档为DOM对象
方法一:
var xmlhttp=null; if (window.XMLHttpRequest){// code for IE7+, Firefox, Chrome xmlhttp=new XMLHttpRequest(); }else{// code for IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.open("GET","note.xml",false); xmlhttp.send(); var xmlDoc=xmlhttp.responseXML; //将xml文档转换为XML DOM对象
方法二:
var xmlDoc=null; if (window.XMLHttpRequest){//其他浏览器 xmlDoc=document.implementation.createDocument("","",null);//创建一个空的 XML 文档对象 }else{//IE5及以上版本 xmlDoc=new ActiveXObject("Microsoft.XMLDOM");//创建一个空的 XML 文档对象 } xmlDoc.async="false";//关闭异步加载,这样确保在文档完全加载之前解析器不会继续脚本的执行 xmlDoc.load("note.xml");//加载文件,告知解析器加载名为 "note.xml" 的 XML 文档
解析 XML 字符串为DOM对象
var txt="<bookstore><book><title>java</title><author>GD</author><year>2016</year></book></bookstore>"; var xmlDoc=null; if (window.DOMParser){//其他浏览器 var parser=new DOMParser(); xmlDoc=parser.parseFromString(txt,"text/xml"); }else{//IE浏览器 xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); xmlDoc.async="false"; xmlDoc.loadXML(txt);//加载字符串 }
拿到DOM对象之后就是解析了,方法如下:
//xmlDoc -由解析器创建的 XML 文档 //getElementsByTagName("to")[0] - 第一个 <to> 元素 //childNodes[0] - <to> 元素的第一个子元素(文本节点) //nodeValue - 节点的值(文本本身) //获取第一个to元素的第一个子元素的值 xmlDoc.getElementsByTagName("to")[0].childNodes[0].nodeValue; //检索第一个 <title> 元素的 "lang" 属性的文本值 xmlDoc.getElementsByTagName("title")[0].getAttribute("lang"); //改变第一个 <title> 元素的 "lang" 属性的文本值为first xmlDoc.getElementsByTagName("title")[0].setAttribute("lang","first"); //改变第一个 <title> 元素的文本值 xmlDoc.getElementsByTagName("title")[0].childNodes[0].nodeValue="wb"; newel=xmlDoc.createElement("edition");//创建 <edition> 元素 newtext=xmlDoc.createTextNode("First");//创建值为 "First" 的文本节点 newel.appendChild(newtext);//把这个文本节点追加到 <edition> 元素 x=xmlDoc.getElementsByTagName("book"); x[0].appendChild(newel);//把 <edition> 元素追加到第一个 <book> 元素 //删除指定的节点(或元素),删除第一个 <book> 元素中的第一个节点 xmlDoc.getElementsByTagName("book")[0].removeChild( xmlDoc.getElementsByTagName("book")[0].childNodes[0] );
出于安全方面的原因,现代的浏览器不允许跨域的访问。
这意味着,网页以及它试图加载的 XML 文件,都必须位于相同的服务器上。
否则,xmlDoc.load() 将产生错误 "Access is denied"。
所有 XML 文档中的文本均会被解析器解析。
只有 CDATA 区段(CDATA section)中的文本会被解析器忽略。
CDATA 部分由 "<![CDATA[" 开始,由 "]]>" 结束:
CDATA 部分不能包含字符串 "]]>"。也不允许嵌套的 CDATA 部分。
标记 CDATA 部分结尾的 "]]>" 不能包含空格或折行。
XML 解析器的更多相关文章
- Duilib源码分析(三)XML解析器—CMarkup
上一节介绍了控件构造器CDialogBuilder,接下来将分析其XML解析器CMarkup: CMarkup:xml解析器,目前内置支持三种编码格式:UTF8.UNICODE.ASNI,默认为UTF ...
- tinyxml一个优秀的C++ XML解析器
读取和设置xml配置文件是最常用的操作,试用了几个C++的XML解析器,个人感觉TinyXML是使用起来最舒服的,因为它的API接口和Java的十分类似,面向对象性很好. TinyXML是一个开源的解 ...
- TinyXML:一个优秀的C++ XML解析器
//-------------------------------------------------------------------------------------------------- ...
- 转:TinyXM--优秀的C++ XML解析器
读取和设置xml配置文件是最常用的操作,试用了几个C++的XML解析器,个人感觉TinyXML是使用起来最舒服的,因为它的API接口和Java的十分类似,面向对象性很好. TinyXML是一个开源的解 ...
- XML解析器(转)
常见C/C++ XML解析器有tinyxml.XERCES.squashxml.xmlite.pugxml.libxml等等,这些解析器有些是支持多语言的,有些只是单纯C/C++的.如果你是第一次接触 ...
- TinyXML:一个优秀的C++ XML解析器[转]
TinyXML:一个优秀的C++ XML解析器 读取和设置xml配置文件是最常用的操作,试用了几个C++的XML解析器,个人感觉TinyXML是使用起来最舒服的,因为它的API接口和Java的十分类似 ...
- Java XML解析器
使用Apache Xerces解析XML文档 一.技术概述 在用Java解析XML时候,一般都使用现成XML解析器来完成,自己编码解析是一件很棘手的问题,对程序员要求很高,一般也没有专业厂商或者开源组 ...
- Xml的转义字符--约束-xml解析器
XML解析器:Dom适合增删改查(crud),缺点就是内存消耗大: Sax:内存消耗非常小,解析速度快,但是不适合增删改:
- CDATA(不应由XML解析器进行解析的文本数据)、CDATA的使用场景
1.1. CDATA: CDATA(Unparsed Character Data)指的是不应由XML解析器进行解析的文本数据. 因为XML解析器会将“<”(新元素的开始)和“&”(字符 ...
随机推荐
- easyui datagrid 每条数据后添加操作按钮
easyui datagrid 每条数据后添加“编辑.查看.删除”按钮 1.给datagrid添加操作字段:字段值 <table class="easyui-datagrid" ...
- 跟我一起Django - 01 安装和初始化
跟我一起Django - 01 安装和初始化 python环境 C:\Python27\Lib\site-packages>python --versionPython 2.7.5 安装setu ...
- JQuery知识快览之五—操作属性和结构
前文提到JQuery提供了丰富的内置方法来操作对象集,本文主要介绍JQuery中的那些内置操作属性和DOM结构的方法. prop还是attr? 从JQuery1.6版开始,新增了prop方法来获取和设 ...
- Encoding 分类: HDU 2015-06-25 21:56 9人阅读 评论(0) 收藏
Encoding Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Subm ...
- Entity Framework 第六篇 分页查询
目前分页支持单表 , ) where TEntity : class { ) * size; var _reset = Get(filter, orderBy); total = _reset.Cou ...
- hdu Interesting Fibonacci
Interesting Fibonacci Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Ot ...
- reactjs入门到实战(八)----表单组件的使用
表单组件支持几个受用户交互影响的属性: value,用于 <input>.<textarea> 组件. checked,用于类型为 checkbox 或者 radio 的 &l ...
- AJAX和jQuery Ajax总结
AJAX全称为“Asynchronous JavaScript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用,改善用户体验,实现无刷新效果的技术. 使用AJAX的优 ...
- int转多进制
char buf[4]; int len=100; _itoa(len,buf_len,16);//16代表十六进制,可用其他进制
- centos7 安装 mariadb 的正确命令
使用的是linode的centos7系统,安装mysql发现已经默认的是mariadb. 但是不管是使用linode官网说明还是百度搜索到的的根本安装方法无法安装成功. 总是提示这一句: ERROR ...