XML学习笔记

89 阅读3分钟

XML即可扩展标记语言(Extensible Markup Language)

  • 可扩展的
  • 标签都是自定义的语法十分严格

XML功能

存储数据      数据的可移植性更强,可以把数据存储 XML 文件中

配置文件      作为各种技术框架的配置文件使用 (最多)

在网络中传输    客户端可以使用XML格式向服务器端发送数据,服务器接收到xml格式数据

XML的语法

  • 文档声明必须为结束
  • 文档声明必写在第一行

元素

Element 元素: 是XML文档中最重要的组成部分

元素的命名规则

  • 不能使用空格,不能使用冒号
  • xml 标签名称区分大小写
  • XML 必须有且只有一个根元素 

属性

  • 属性是元素的一部分,它必须出现在元素的开始标签中
  • 属性的定义格式:属性名=属性值,其中属性值必须使用单引或双引
  • 一个元素可以有0~N个属性,但一个元素中不能出现同名属性
  • 属性名不能使用空格、冒号等特殊字符,且必须以字母开头

注释

XML的注释内容会被XML解析器忽略

XML约束

在XML技术里,可以编写一个文档来约束一个XML文档的书写规范,这称之为XML约束

常见的xml约束

  • DTD
  • Schema

Schema约束

  • Schema是新的XML文档约束, 比DTD强大很多,是DTD 替代者
  • Schema本身也是XML文档,但Schema文档的扩展名为xsd,而不是xml
  • Schema 功能更强大,内置多种简单和复杂的数据类型
  • Schema 支持命名空间 (一个XML中可以引入多个约束文档)

XML 解析

DOM:要求解析器把整个XML文档装载到内存,并解析成一个Document对象

  • 优点:元素与元素之间保留结构关系,故可以进行增删改查操作
  • 缺点:XML文档过大,可能出现内存溢出显现

SAX:是一种速度更快,更有效的方法。它逐行扫描文档,一边扫描一边解析。并以事件驱动的方 式进行具体解析,每执行一行,都将触发对应的事件

  • 优点:占用内存少 处理速度快,可以处理大文件
  • 缺点:只能读,逐行后将释放资源

XML常见的解析器

  • JAXP:sun公司提供的解析器,支持DOM和SAX两种思想
  • DOM4J:一款非常优秀的解析器 , Dom4j是一个易用的、开源的库,用于XML,XPath和XSLT。 它应用于Java平台,采用了Java集合框架并完全支持DOM,SAX和JAXP
  • Jsoup:jsoup 是一款Java 的HTML解析器 ,也可以解析XML
  • PULL:Android内置的XML解析方式,类似SAX。

DOM4J 的使用

使用核心类SaxReader加载xml文档获得Document,通过Document 对象获得文档的根元素,然后就可以操作了

SaxReader对象

  • read(…) 加载执行xml文档

Document对象

  • getRootElement() 获得根元素

Element对象

  • elements(…) 获得指定名称的所有子元素。可以不指定名称

  • element(…) 获得指定名称的第一个子元素。可以不指定名称

  • getName() 获得当前元素的元素名

  • attributeValue(…) 获得指定属性名的属性值

  • elementText(…) 获得指定名称子元素的文本值

  • getText() 获得当前元素的文本内容

    public class TestDOM4j { @Test public void test1() throws DocumentException { SAXReader reader = new SAXReader(); Document document = reader.read("src/com/test/xml/book.xml"); Element rootElement = document.getRootElement(); List elements = rootElement.elements(); for (Element element : elements) {} }