首页 > 代码库 > XML

XML

  XML:eXtensible Markup Language 可扩展标记语言

 

  XML与Html比较

 XMLHtml
设计宗旨存储与传输数据显示数据
标签自定义预定义
语法严格松散

 

  XML乱码相关问题

  原因:存储XML的文件的编码格式与XML文件第一行中声明的<?xml version="1.0" encoding="编码" ?>不相符,导致XML错误。

  分析:存储XML的文件的编码格式是XML文件的实际编码类型,而文件声明的encoding是告诉打开它的应用程序,要用我指定的编码方式进行解码,故出错。

  解决方法:encoding改为文件的编码,或者改变文件的编码即可。

  疑问:你可能想如果我不指定的encoding呢?

  答案:如果未指定encoding,打开XML的应用程序将会两种情况打开:

      1 按照文件的编码打开(最好不过了)

      2 按照应用程序的默认编码打开,比如有些浏览器按照默认UTF-8打开。

  启示:XML文件必须加上encoding,这样万无一失。

 

XML约束

  目前,XML约束分为2类,dtd,和schema。

  dtd:缺点不能准确限制数据类型。
    dtd分类:
      * 内部dtd:在xml内部定义dtd
      * 外部dtd:在外部文件中定义dtd
      * 本地dtd文件:<!DOCTYPE students SYSTEM "student.dtd">
      * 网络dtd文件:<!DOCTYPE students PUBLIC "名称空间" "student.dtd">

  dtd详情请见菜鸟教程:http://www.runoob.com/dtd/dtd-tutorial.html
  schema
    导入xsd约束文档:
      1、编写根标签
      2、引入实例名称空间 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      3、引入名称空间 xsi:schemaLocation="http://www.itcast.cn/xml       student.xsd"
      4、引入默认的名称空间

  schema详情请见菜鸟教程:http://www.runoob.com/schema/schema-tutorial.html

  看到这里,不知道做Java EE的同学认出了,这是JavaEE项目中web.xml开头那段总是TMD看不懂的代码。那里采用的就是schema约束。

 

XML解析

  xml解析思想:
    * DOM解析:将文档加载进内存,形成一颗dom树(document对象),将文档的各个组成部分封装为一些对象。
      * 优点:因为,在内存中会形成dom树,可以对dom树进行增删改查。
      * 缺点:dom树非常占内存,解析速度慢。

    * SAX解析:逐行读取,基于事件驱动
      * 优点:不占内存,速度快
      * 缺点:只能读取,不能回写

  xml常用的解析器:
    * DOM4J
      1.导入jar包 dom4j.jar,最新为dom4j-1.6.1.jar
      2.创建解析器
          SAXReader reader = new SAXReader();
      3.解析xml 获得document对象
          Document document = reader.read(url);

    * XPATH:专门用于查询
      * 定义了一种规则。
      * 使用的方法:
          * selectSingleNode():
          * selectNodes():
      使用步骤:
        1、注意:要导包dom4j-1.6.1.jar和jaxen-1.1-beta-6.jar两个包。
        2、创建解析器
            SAXReader reader = new SAXReader();
        3、解析xml 获得document对象
            Document document = reader.read(url);

 

 

 

XML