Java---XML

XML(EXtensible Markup Language)--可扩展标记语言--通用的数据交换的格式,实现计算机之 间目的文档的交换,而设计的文档内容的编写规范。

特点:

  1. XML与操作系统,编程语言的开发平台无关;
  2. 实现不同系统之间的数据交集

作用:

  1. 数据交互;
  2. 配置应用程序和网站;
  3. Ajax基石
XML文档结构

带有<>的叫做标记、标签、元素

<books>~~</books>----根元素:元素里面最外层的元素,成对出现,有且只有一个, 在最后位置的根元素有"/",例如  </book>

<book id="bk101">----------<book >----是一子元素,被包含的,需要缩进

<!--图书信息-->------------注释
//声明--开头

<?xml verson="1.0"encoding="UTF-8"?>

//文档结构----文档元素描述信息

<books>
    <bookid="bk101">

        <!--图书信息-->

        <bookid="bk101">

        <author>王珊</author>

        <title>.NET高级编程</title>

        <description>包含C#框架和网络编程等</description>

    </book>

    <bookid="bk102">

        <author>李明明</author>

        <title>.XML基础编程</title>

        <description>包含XML基础概念和基本作用</description>

    </book>

</books>

XML标签

XML文档内容有一系列标签元素组成

示例:

<元素名 属性名 =  ”属性值” >  元素内容  </元素名>

空元素:-----3种是一样的

<name>  </name>

<name></name>

<name/>

语法

属性值用双引号包裹;

一个元素可以有多个属性;

属性值中不能直接包含<    &(不建议‘ >)

 

XML编写注意事项:

标签编写注意事项

  1. 所有XML元素都必须有结束标签-------</>
  2. XML标签对大小写敏感
  3. XML必须对正确的嵌套
  4. 同级标签以缩进对齐
  5. 元素名称可以包含字母、数字或者其他字符
  6. 元素名成不能以数字或者标点符号开始------<5name>   x
  7. 元素名称中不能含空格  不能用:  .  -  ;

 

转义符  

 

注意:当元素中出现了很多特殊字符时,可以使用CDATA节-------原样输出!

如:

<description>< ! [ CDATA [ 讲解了元素<title>以及</title>的使用 ] ] ></description>

 

XML解析器

解析器类型

非验证解析器:检查文档格式是否良好!

验证解析器:使用DTD检查文档的有效性

DTD :文档类型定义,验证机制

解析XML技术

  1.DOM

基于XML文档树结构的解析

适用于多次访问的XML文档

特点:比较消耗资源

  2.SAX

基于事件的解析

适用于大数据量的XML文档

特点:占用资源少,内存消耗

  3.DOM4J

非常优秀的Java XML API

性能优异、功能强大

开放源代码

DOM解析XML

DOM介绍

文档对象模型

DOM把XML文档映射成一个倒挂的树

常用接口介绍:

DOM解析包:org.w3c.dom

常用接口      常用方法 说明

 

Document: NodeList 按文档顺序返回文档中制

表示整个XML文档 定标记名称的所有元素集合

Node该文档中树 NodeListgetChildNodes() 获取该元素的所有子节点,

的单个节点 返回节点集合

Element:XML文档 String getTagName()  获取元素名称中的一个元素

 

 

访问DOM树节点

显示“收藏信息.xml”文件中收藏的手机品牌和型号

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

<PhoneInfo>

<Brand name="华为">

<Type name="U8650"/>

<Type name="U8888"/>

<Type name="U6668"/>

</Brand>

<Brand name="苹果">

<Type name="iphone6"/>

<Type name="iphone7"/>

<Type name="iphone8"/>

</Brand>

</PhoneInfo>

 

DOM解析XML文件步骤:

创建解析器工厂对象

解析器工厂对象创建解析器对象

解析器对象指定XML文件创建Document对象

以Document对象为起点操作DOM树

 

 

1.使用DOM解析XML文件

2.收藏信息,xml对应的Document对象

3.获得DOM树,获得document对象

4.获取手机品牌以及型号的相关信息

 

 

DOM4J

信息类

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

<animal>>

<an ID="s1">

<name>老王</name>

<brand>二哈</brand>

<color>绿色</color>

<gender>公</gender>

<age >5</age>

</an>

<an ID="s2">

<name>东东</name>

<brand>金丝猴</brand>

<color>棕色</color>

<gender>公</gender>

<age>6</age>

</an>

</animal>

动物类

import java.util.Iterator;

import org.dom4j.Document;

import org.dom4j.DocumentException;

import org.dom4j.Element;

import org.dom4j.io.SAXReader;

//解析animal  XML文件,对xml查询、增加、修改、删除

public class AnimalDao {

//加载整个Document文档

public Document parse(String url) throws DocumentException{

SAXReader reader =new SAXReader();

Document document=reader.read(url);

return document;

}

 public void query(Document document) throws DocumentException {

 //先得到根节点animal

 Element root=document.getRootElement();

 //遍历根元素的所有子节点<animal>

 Iterator es=root.elementIterator();

 while(es.hasNext()){

 Element animal=(Element)es.next();

 Iterator its=animal.elementIterator();

 while(its.hasNext()){



 //得到每一个animal的所有子节点

 Element el=(Element)its.next();

 //得到子节点文本

 String str=el.getText();

 System.out.println(str);

 } } }}

测试类


import org.dom4j.Document;

import org.dom4j.DocumentException;

public class Test {

public static void main(String[] args) {

AnimalDao ad=new AnimalDao();

try {

Document doc=ad.parse("animals.xml");

ad.query(doc);

} catch (DocumentException e) {

e.printStackTrace();

}}}

 

 

 

发布了65 篇原创文章 · 获赞 15 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/kxindouhao5491/article/details/81676367
今日推荐