营销培训seo优化排名易下拉效率
一,XML概述
1.什么是XML
- XML即为可扩展的标记语言(eXtensible Markup Language)
 - XML是一套定义语义标记的规则,这些标记将文档分成许多部件并对这些部件加以标识
 
2.XML和HTML不同之处
- XML主要用于说明文档的主题,而HTML侧重描述文本的显示格式。
 - XML文档数据和格式分离,文档=文档数据+文档结构+文档样式
 

- XML是一种元标记语言,用户可以自己定义标记集,从而使数据具有自我描述性,而HTML的标记是不能自己定制的。
 - XML支持Unicode字符集
 
3.Unicode
- Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。1990年开始研发,1994年正式公布。随着计算机工作能力的增强,Unicode也在面世以来的十多年里得到普及。
 - 常用 Unicode
 - UTF-8:以字节为单位对Unicode进行编码 。
 - UTF-16 :以16位无符号整数为单位 。
 - GB2312:gb2312 出现较早 ,一些汉字和繁体不支持。
 - GBK: 95年重新修订了编码,命名GBK1.0,共收录了21886个符号。
 - 之后又推出了GBK18030编码,共收录了27484个汉字,同时还收录了藏文、蒙文、维吾尔文等主要的少数民族文字,现在WINDOWS平台必需要支持
 - GBK18030编码。
 
按照GBK18030、GBK、GB2312的顺序,3种编码是向下兼容,同一个汉字在三个编码方案中是相同的编码。
二,XML文档结构
1.XML元素
(1)规范的XML文档中关于元素的几条原则
- 文档要包含一个或多个元素
 - 根元素(文档元素)唯一,且其无任何部分出现在其他元素中
 - 元素必须被正确关闭
 - 元素不得交叉
 - 属性值必须加引号(单引、双引均可)
 
(2)树形组织结构
- 父元素
 - 子元素
 

2.XML与HTML标签对比
1. xml标签区分大小写(开始标签和结束标签大小必须一致)<tr></tr>
 html标签不区分大小写<tr></TR>
 2. xml中空元素标签必须被关闭<br/>
 html中空元素标签可以不被关闭<br>
 3. xml所有标签必须严格嵌套 <b><i></i></b>
 html不一定严格嵌套 <b><i></b></i>
 4. xml所有标签中的属性值字符必须加(“ ”)或(‘ ’),包括属性
 值为数字时<student tel=‘0108888888’/>(内容有双引号使用
 (‘’),内容有单引号使用(“”))
 html属性值不一定用引号括起来 <hr color=blue>
 5. xml只能有一个根元素
 html可以有多个根元素
3.逻辑结构——XML文档结构
1. XML文档的构成一个格式良好的XML文档要包含三个部分:
- XML声明
 - 处理指令(可选)
 - XML元素
 
三,XML解析
1.XML解析
1. 将 XML 数据从其序列化字符串格式转换为分层格式,获取对应信息的过程
 2. 语言无关性
 3. 常用的四种解析方式
- DOM
 - SAX
 - JDOM
 - DOM4J
 
2.DOM解析
1. 优点
- 允许应用程序对数据和结构做出更改
 - 访问是双向的,可以在任何时候在树中上下导航,获取和操作任意部分的数据
 
2. 缺点
- 通常需要加载整个XML文档来构造层次结构,消耗资源大。
 
3.SAX解析
1. SAX处理的优点非常类似于流媒体的优点,事件驱动
 2. 优点
- 不需要等待所有数据都被处理,分析就能立即开始
 - 只在读取数据时检查数据,不需要保存在内存中
 - 可以在某个条件得到满足时停止解析,不必解析整个文档
 - 效率和性能较高,能解析大于系统内存的文档
 
3. 缺点
- 需要应用程序自己负责TAG的处理逻辑(例如维护父/子关系等),文档越复杂程序就越复杂
 - 单向导航,无法定位文档层次,很难同时访问同一文档的不同部分数据
 - 无状态性,事件过后查询内容不会自动保存
 
4.JDOM解析
1. 优点
- 使用具体类而不是接口,简化了DOM的API
 - 大量使用了Java集合类,方便了Java开发人员
 
2. 缺点
- 没有较好的灵活性
 - 性能较差
 
5.DOM4J解析
1. 优点
- 大量使用了Java集合类,方便Java开发人员,同时提供一些提高性能的替代方法
 - 支持XPath
 - 有很好的性能
 
2. 缺点
- 大量使用了接口,API较为复杂
 
3.常用类
- Document - 表示整个XML文档。文档Document对象是通常被称为DOM树。
 - Element - 表示一个XML元素。 Element对象有方法来操作其子元素,它的文本,属性和名称空间。
 - Attribute - 表示元素的属性。属性有方法来获取和设置属性的值。它有父节点和属性类型。
 - Node - 代表元素,属性或处理指令
 
4.常用方法
- SAXReader.read(xmlSource)() - 构建XML源的DOM4J文档。
 - Document.getRootElement() - 得到的XML的根元素。
 - Element.node(index) - 获得在元素特定索引XML节点。
 - Element.attributes() - 获取一个元素的所有属性。
 - Node.valueOf(@Name) - 得到元件的给定名称的属性的值。
 
5. 文档读取
- SAXReader reader = new SAXReader();
 - Document document = reader.read(new File(fileName));
 
 6. 获取根节点
- root = document.getRootElement();
 
 7. 遍历节点
- for ( Iterator i = root.elementIterator(); i.hasNext(); )
 - Element element = (Element) i.next();
 
8. 创建xml文档
- Document document = DocumentHelper.createDocument();
 - Element root = document.addElement("root");
 
 9. 添加元素
- Element author2 = root.addElement(“student”)
 - .addAttribute("name", “yaoMing")
 - .addAttribute(“age", “20")
 - .addText(“He is a boy");
 
 10. I/O流生成xml文档
- FileWriter fileWiter = new FileWriter(“XXX.xml"))
 - XMLWriter writer = new XMLWriter(fileWriter);
 - writer.write( document );
 
