XML解析原理 | QiuRiMangCao
@author QiuRiMangCao | 秋日芒草
@Description XML基础 | 解析原理 | 解析方法
@time 2017-08-10
xml 解析后乱码问题?
contact.xml 里面写的是字符
编码过程:字符-字节
写完xml-保存-硬盘(字节) 都需要查码表windows - GBK
解码过程:字节-字符
contact.xml(硬盘) - 浏览器 - 字符 也要查码表 默认为utf-8
涉及xml文件的编码问题:
1.保存xml文件的时候(编码过程) 可以在保存文件的时候选择保存时的编码为utf-8
2.打开/解析xml文件的时候(解码问题) 可以对xml文档声明
//<?xml version="1.0" encoding="utf-8" ?>
//解码时用的码表
如果要保证读取的xml文件不存在中文乱码问题:
1.保证以上二个地方的编码一致
2.编码要支持中文
补充:Windows的默认编码为GBK,Linux的默认编码为UTF-8
GBK编码占两个字节,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中内置了一些特殊字符,这些字符不能直接被浏览器原样输出,
如果希望把这些特殊字符按原样输出到浏览器,那就要对这些特殊字符进行转义。
特殊字符 转义字符
< <
缺点:转义书写麻烦
[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--->对象--->通过对象去操作xml
Dom解析:
Document对象,代表一个完整的xml文档
通过Document对象就可以得到其下面的其他节点对象,
通过节点访问xml文档的内容(标签,属性,文本,注释)
[什么是DOM解析]
DOM解析原理:xml解析器一次性把整个xml文档加载进内存,
然后在内存中年构造成Document的对象,通过Document对象,
得到树上节点对象,来通过节点对象访问(操作)到xml文档内容。
XML解析原理 | QiuRiMangCao
最新推荐文章于 2021-05-27 12:53:52 发布