码迷,mamicode.com
首页 > 其他好文 > 详细

XML

时间:2017-06-29 00:44:07      阅读:188      评论:0      收藏:0      [点我收藏+]

标签:xml

一.XML概述

定义:Extensible Makeup Language(可扩展标记语言);

作用:

1.存储数据,有良好的存储格式,多种语言通用

2.作为配置文件,许多框架都使用xml作为配置文件

语法:

1.文件后缀名必须为.xml;

2.文档声明必须写在第一行,且前面不能空格,一般写法:<?xml version="1.0" encoding="UTF-8"?>;

3.注释格式:<?--    -->(ST快捷键 ctrl+shift+/);

4.元素(标签):xml文件的基本组成部分,由开头和结尾组成:开头由一对<>和元素名组成;结尾<>内多一正斜杠,如:<Peson></Person>;

5.根元素:最先出现的元素,根元素只有一对;

6.元素体:元素两个<>中出现的文本,如<Person>text</Person>中的text称为元素体;

7.属性:元素的组成部分,写在开始标签里.属性名必须以英文字母开头,不能有空格且不能重复,格式为:属性名=属性值,属性值需用""或‘‘包裹,如<Person id="001"></Person>,id即为属性

8.转义字符:> ----- &lt; < ---- &gt; " ---- &quot; ‘ ---- &apos; & ---- &amp;

9.CDATA区:格式<?[CDATA[--内容--]]>,内容区直接原样展示,不被xml解析器解析;

关于文档声明的补充:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

1.声明语句必须有version属性,encoding和standalone是可选的;

2.三个属性同时存在时必须按上述顺序排列;

3.如果没有声明encoding属性,则解析时默认采用uft-8或utf-16;如果不声明,解析器也不支持utf-8吉utf-16,则引起解析出错;

4.standalone只有两个值"yes"或"no",no表示文档可能依赖于一个DTD文件存在;yes表示可以独立存在.

二.XML解析

两种方式:

SAX解析:逐行解析;效率高,不易出现内存不足的情况;但是只能对xml解析,且不能进行增删改的操作

DOM解析:将整个文件加载到内存中,形成一个Document对象,对该对象进行解析,优点是可以进行增删改的操作,但是容易出现内存不足的情况

解析工具:常用工具为dom4j.jar包

JAXP:sun公司提供支持DOM和SAX开发包

JDom:dom4j兄弟

jsoup:一种处理HTML特定解析开发包

dom4j:比较常用的解析开发包,hibernate底层采用。


三.Dom4j的常用API

SAXReader类:

定义:public class SAXReader extends Object

构造方法:

SAXReader()

普通方法:

public Document read(String systemId) throws DocumentException{}:根据路径读xml文件,得到一个文档对象!

Document接口:

定义:public interface Document extends Branch

普通方法:

public Element getRootElement(){}:获取根标签对象

Element接口:

定义:

public interface Element extends Branch

普通方法:

public Element element(String name){}:Returns the first element for the given local name and any namespace.

public Element element(QName qName){}:Returns the first element for the given fully qualified name.

==========================================================================================================

public List elements(){}:获取该标签对象下的所有子标签

public List elements(String name){}:面向该元素对象,获取指定名称的子标签

public String attributeValue(String name){}:面向元素对象,根据属性名获取属性值

public String getText(){}:面向该元素对象,获取元素体;(如果元素体是一个标签,会得到null)

=============================================================================================

public Iterator elementIterator(){}:Returns an iterator over all this elements child elements.

public Iterator elementIterator(QName qName){}:Returns an iterator over the elements contained in this element 

which match the given fully qualified name.

public Iterator elementIterator(String name){}:Returns an iterator over the elements contained in this element 

which match the given local name and any namespace.

=================================================================================================================

public String elementText(String name){}:

public String elementText(QName qname){}:


Node接口:

定义:public interface Node extends Cloneable

普通方法:

public String getName(){}:返回该节点对象的名称


代码演示:

import java.util.List;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class XmlTest {
public static void main(String[] args) throws Exception {
// 创建SAXReader对象
SAXReader sax = new SAXReader();
// 获取Docu

XML

标签:xml

原文地址:http://huguangqin2015.blog.51cto.com/10856722/1942873

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!