XML解析原理 | QiuRiMangCao

来源:互联网 发布:nginx 自建dns解析 编辑:程序博客网 时间:2024/06/15 10:14
XML解析原理 | QiuRiMangCao@author QiuRiMangCao | 秋日芒草 @Description XML基础 | 解析原理 | 解析方法@time 2017-08-10xml 解析后乱码问题?contact.xml 里面写的是字符编码过程:字符-字节写完xml-保存-硬盘(字节) 都需要查码表windows - GBK解码过程:字节-字符contact.xml(硬盘) - 浏览器 - 字符 也要查码表 默认为utf-8涉及xml文件的编码问题:1.保存xml文件的时候(编码过程) 可以在保存文件的时候选择保存时的编码为utf-82.打开/解析xml文件的时候(解码问题) 可以对xml文档声明//<?xml version="1.0" encoding="utf-8" ?>//解码时用的码表如果要保证读取的xml文件不存在中文乱码问题:1.保证以上二个地方的编码一致2.编码要支持中文补充:Windows的默认编码为GBK,Linux的默认编码为UTF-8GBK编码占两个字节,ASCLL编码只占一个字节。GBK编码肯定是能包含ASCCL里面的所有码表。这样做可以统一编码。 在eclipse中编写xml,保存的时候会自动根据文档声明来保存如:<?xml version="1.0" encoding="utf-8"?>//保存文件格式为utf-8项目问题:某一天程序员001从git上拉了一个phone.xml文件到本地,需要修改xml,然后提交上去,phone.xml文件如下,结果第二天系统炸了,请分析是怎么回事?<?xml version="1.0" encoding="utf-8"?><phone>    <id>1</id>    <dh>15382290136</dh></phone>分析:程序员把项目拉下来后用工具打开文件进行修改,如就是使用记事本编辑,编辑后ctrl+s保存,这个时候保存按照默认编码格式(gbk)保持了,而现在xml中encoding="utf-8",这个时候会导致xml的读取失败或出现乱码问题。这里在修改的时候需要注意,着重看文档声明的编码格式,按文档声明的编码格式保存。[转义字符]在xml中内置了一些特殊字符,这些字符不能直接被浏览器原样输出,如果希望把这些特殊字符按原样输出到浏览器,那就要对这些特殊字符进行转义。特殊字符   转义字符<          &lt;缺点:转义书写麻烦[CDATA块]作用:可以让一些需要进行包含特殊字符进行原样输出语法:    <![CDATA[        //需要转义的字符    ]]>[处理命令]作用:处理指令用来指挥解析引擎如何解析xml文档内容案例:<?xml-stylesheet type="text/css" href="1.css" ?>1.css如下:phone{    color:red;}//告诉xml解析该xml文档引用哪个css文件需要提取xml内容可以使用xml-stylesheet命令指令//不严谨-严谨HTML --- XML[xml解析] xml文件除了给开发者看,更多情况是让程序去读取xml文件中的内容[解析方式-原理不同]1.DOM解析 : JAXP JDOM Dom4J(默认)2.SAX解析 :  Sax解析工具BOM:浏览器对象编程DOM:文档对象编程 javaScript引擎把html文本标签封装成各种对象Xml解析器把解析xml文档时,把xml文件的各个部分内容封装成对象,通过这些对象操作xml文档,这种做法叫DOM解析(DOM编程)Document树:树只有一个根标签,树上的分支,叫节点(Node)节点信息<phone>  --Node    节点名称    节点类型:标签节点,属性节点,文本节点,注释节点    标签节点:<name></name>  --Element        标签名称    属性节点:<phone id="01"> </phone>   --Attribute        属性名称        属性值    文本节点:<name>123456</name>  --Text        文本内容xml--->对象--->通过对象去操作xmlDom解析:Document对象,代表一个完整的xml文档通过Document对象就可以得到其下面的其他节点对象,通过节点访问xml文档的内容(标签,属性,文本,注释)[什么是DOM解析]DOM解析原理:xml解析器一次性把整个xml文档加载进内存,然后在内存中年构造成Document的对象,通过Document对象,得到树上节点对象,来通过节点对象访问(操作)到xml文档内容。
原创粉丝点击