第二十章 XML

来源:互联网 发布:淘宝评价和销量被删除 编辑:程序博客网 时间:2024/05/16 13:50

html比xml产生的早些,发展也很不错。但是html有着2个缺点,是xml曾经想要替代的。

就是标记语法不是很严格,有时候难以判断,造成长时间的等待。还有就是厂商众多,导致语言不太统一,各有特点。给编程者带来一些麻烦。

xml这些方面来说,一是语法更加严格,要求标记有开始必有结束,除非是单标记。只能有一个根元素。并且必须有正确嵌套。

还有xml可以扩展。允许用户自定义一些自己的标记。但是需要提供解释文档。以便浏览器可以正确的解析。常用的有dtd文档和schema

一、用途

xml现在常用作网络配置文件,在数据交换和结构化存储及显示方面有着很广泛的应用。另外就是配置文件。

二、组成

xml有两部分组成:

1.序言

包括一下几个部分

声明:<?xml    version="1.0"    encoding= "UTF-8"?>

注释:<!--                注释       -->

样式说明::<?xml   sytlesheet="******"    ?>

空白:

描述文档:系统文件<!DOCTYPE   根元素名称   SYSTEM  "dtd文件路径">

网络资源<!DOCTYPE   根元素名称   PUBLIC  "网络dtd文件url">

内置定义<!DOCTYPE   根元素名称   【里面直接定义dtd文件内容】>

2.文档元素

xml文档元素包括  元素和属性

<!ELEMENT  元素名称 (子元素列表)>

子元素后面可以跟这些修饰符:?0或1次,+1或多次,*0或多次。“,”表示元素的顺序。()表示元素分组,|表示选其中一个。

如果元素后面没有嵌套的子元素时,可以用#PCDATA来表示含有文本描述。EMPTY表示元素无任何文本描述。

 

<!ATTLIST   属性名称  

       属性名称      数据类型       约束

                        CDATA字符串               #REQURED 必须选择填写

                        ID唯一不能重复            #IMPLIED 可以选择

                        IDREF 引用其他ID       #Defualtvalue 默认值

                                                                                    >

 

三、解析

解析技术分为2种:

一个是进行校验的处理器;

一个是不进行校验的处理器;

java中常用的2种API 是

DOM :小文件可以反复查询,可以修改和排序,还能与其他程序在内存中共享,因为它是将文件全部加载到内存中进行处理。是文档树的模型,可以显示的处理。

SAX:适用于大型文件的一次性 选择性的扫描。 它是事件触发模型。只有扫描到需求的内容时,才会产生事件,可以忽略不关心的部分。

 

DOM和SAX的实现方法有

JAXP,JDOM,DOM4J3种

DOM4J 简单易用,适合处理小型的文档。使用了java集合框架。

 

列子:

import java.util.List;import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.Element;import org.dom4j.io.SAXReader;public class MyXML {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubSAXReader saxreader = new SAXReader();try {Document document  = saxreader.read("homework.xml");List list = document.selectNodes("//tanks/tank/name");for(Object obj:list){Element ele = (Element) obj;System.out.println(ele.getText());}} catch (DocumentException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally{if(saxreader != null){}}}}


 

原创粉丝点击