1 XML概述

    1.1 XML是什么?

eXtensible Markup Language可扩展标记语言

    

    1.2 XML作用

        主要是用于描述数据,而非显示数据。一般用于配置文件

    1.3 其他说明

        html是一个特殊的XML

2 XML语法

    2.1 XML的声明

a,声明必须处于xml文件的第一行,声明之前不能有任何内容。

        b,<?xml和?>中间定义 version版本 和 encoding字符集 standalone表示文档是独立的还是依赖其它文档

        c,<?xml中间不能有空格,?>之间也不能有空格

 

 

    2.2 XML的注释

<!--只有一种注释--> 且不能嵌套

    2.3 XML元素的定义

 

命名规范:

可以由字母,汉字,下划线,数字,减号组成。

但是,只能以字母,汉字和下划线开头。

书写规范:

元素都是用<>包裹起来的

<和元素名称直接不能有空格,制表符

XML中元素都需要有结束

        元素可以有主体内容,也可以没有

元素之间不能嵌套

 

    2.4 XML元素属性的定义

a,属性名称的命名规范与元素相同

        b,属性只能出现在开始元素中

        c,同一个元素的属性名称不能相同

        d,属性的值都是用'或""括起来的

 

 

    2.5 CDATA区

CDATA的区是让区域内容以文本的形式显示

            <![CDATA[ 内容 ]]>

 

    2.6 特殊字符

&lt; <

&gt; >

&amp; &

&quot表示双引号

&qpos; 表示单引号

 

 

    2.7 PI指令

 

PI指令:用来指挥软件如何解析XML文档。

        XML的声明,就是PI指令的一种具体体现形式    

3 XML约束

    3.1 DTD约束

        3.1.1,定义:

Document Type Definition 文档类型定义

        3.1.2,作用:

用来约束XML中元素,元素属性的个数和顺序。

        3.1.3,如何使用:

            a. 直接写在XML文档当中

 

            b. 引用dtd文件

                第一种:使用本地DTD

                    <!DOCTYPE 根元素 SYSTEM DTD URL>

 

第二种:使用网络DTD

    <!DOCTYPE 根元素     PUBLIC DTD URL>

    
 

 

        3,14规则的定义:

    小括号内可以子元素,例如:(书)和(书名,作者,售价)

    也可以是具体类型,例如:(#PCDATA)表示普通文本>

 

子元素的规则

1 如果括号内的元素以逗号分开,则表示其必须是按照书写顺序出现

2 如果括号内的元素以|分开,则表示其任选其一

3 +,*,?表示的是元素出现的次数

    + 表示可出现多次

    * 表示可有可无,可出现多次

    ?表示可有可无,但是如果有的话,只能出现一次

    什么都不写表示有且只有一次

 

 

    3.2 Schema约束

    a,定义:

Schema它也是一个XML,是一个特殊的XML,同时也遵循XML的规范。

        xmlns:(xml
name space ) 引入xsd的名称空间

        targetNamespace:目标名称空间。将当前xsd绑定到哪个名称空间上。

    

b,如何引入(使用)xsd

 

        1 使用xmlns来引入名称空间,该名称空间与targetNamespace一致。

        2 使用schemaLocation指定该名称空间下的哪个xsd文件。

        3 使用xmlns:xsi来指定schemaLocation来自哪个名称空间

4 XML解析

    4.1 解析概述

        a 解析的两种方式

            DOM:是树形结构解析。需要加载整个文档。弊端:容易造成内存溢出。

            SAX:按行读取,读一行解析一行。弊端:增删改都不方便

        b 基于两种方式的三种具体实现

            JAXP: 基于DOM,是w3c推出。

            DOM4J:基于DOM,是第三方开源的

            SAX:基于SAX,是来源于一个开源社区

 

 

 

    4.2 JAXP解析XML

1,获取document对象

        a 获取解析器工厂类 DocumentBuilderFactory

 

        b 获取解析器 DocumentBuilder

 

        c 获取Document

 

    2,将内容保存

        TransformerFactory

        Transformer

        former.transform(

new DOMSource(document),

new StreamResult("src/com/jinfulin/db/Students.xml"));

    
 

 

 

4.4SAX解析

1,概述

针对DOM解析的缺点诞生的。(不耗费很多的内存);按行解析,查询速度快,缺点是只适合查询。

SAX:Simple API for XML。来自开源社区。

 

2、原理:

SAX解析是读到XML文档的每一部分,就立刻进行解析。调用对应处理器的响应方法。

 

4,处理过程

 

//通过工厂获取解析器对象

        SAXParserFactory factory =                         SAXParserFactory.newInstance();

        SAXParser parser = factory.newSAXParser();

        //调用parse方法通过DefaultHandler子类实现方法

    parser.parse("src/LocalLIst.xml",new myHandler());

 

4.5DOM4J解析

1,获取Document对象

    SAXReader reader = new SAXReader();

     Document document = reader.read("src/LocalList.xml");

2,保存修改的xml

    OutputFormat format= OutputFormat.createPrettyPrint();

//给人看,有格式

    //OutputFormat format =OutputFormat.createCompactFormat();

//给电脑看,没有格式(一行的形式 )

        XMLWriter writer = new XMLWriter(

new FileOutputStream("src/LocalList.xml"),

format);

        writer.write(document);

3,常见操作

 

//获取根节点

        Element root = document.getRootElement();

        //获取全部指定名称子节点

        List<Element> list = root.elements("City");

        //获取子节点内容

        Element e = list.get(4);

        Element ee = e.element("name");

        System.out.println(ee.getText());

 

//创建元素节点

        Element etest = DocumentHelper.createElement("test");

//设置节点文本

        etest.setText("jinfulin");

//添加子节点

eCity.add(etest);

        

//设置元素属性

e.addAttribute("king", "aa");

 

 

4.7,XPath的基本使用

 

Xpath主要用于获取节点

 

Document:selectNodes("xpath"),返回多个节点

Document:selectSingleNode("xpath"),返回一个节点或者没有

Node:valueOf("xpath") 取属性的值

 

注意:

使用XPath之前要引用dom4j-1.6.1\dom4j-1.6.1\lib\jaxen-1.1-beta-6.jar包,否则会报error

 

 

 

4.6Junit单元测试

一、 测试方法的四大特征

     * 1 必须是public的

     * 2 必须没有返回值

     * 3 必须没有参数

     * 4 全都有@Test注解

 

二、五大常用注解

     * @Test 测试方法的注解

     * 有两个常用属性

     *     timeout:方法的过期时间,当不超过过期时间,并且断言通过的情况下,测试通过

     * expected:预期的异常,当出现此异常时,测试通过

     * @Before 在每次方法执行前执行

     * @After 在每次方法执行后执行

     * @Before和@After是有几个方法就会执行几次

     *

     * @BeforeClass 在类加载的时候执行

     * @AfterClass 在类卸载前执行

     * @BeforeClass和@AfterClass只会执行一次

 

 

5常用的类

        Node

        NodeList

        Element

        TransformerFactory

        Transformer

 

Document -- Node--Element---

 

 

 

 

 

 

 

 

 

Javaweb之xml的更多相关文章

  1. JavaWeb之XML详解

    XML语言 什么是XML? XML是指可扩展标记语言(eXtensible Markup Language),它是一种标记语言,很类似HTML.它被设计的宗旨是传输数据,而非显示数据. XML标签没有 ...

  2. JavaWeb基础: XML基础知识

    简介 XML:可扩展标记语言,W3C指定的用于描述结构化数据的语言,XML在实际开发中,经常用作软件的配置文件,以描述程序模块之间的依赖和组合关系. XML约束:XML常常用于软件配置管理,对于软件框 ...

  3. JavaWeb 4 XML

    4 XML 1 XML入门        1.1 引入        HTML: 负责网页的结构            CSS: 负责网页的样式(美观)        Javascript: 负责在浏 ...

  4. javaweb web.xml文件详解

    web.xml文件详解 前言:一般的web工程中都会用到web.xml,web.xml主要用来配置,可以方便的开发web工程.web.xml主要用来配置Filter.Listener.Servlet等 ...

  5. javaweb web.xml版本

    web.xml版本的xsd分为如下几个版本 web-app_2_2.xsd web-app_2_3.xsd web-app_2_4.xsd web-app_2_5.xsd .... web-app_3 ...

  6. JavaWeb基础—XML学习小结

    一.概述 是什么? 指可扩展标记语言 能干什么? 传输和存储数据 怎么干? 需要自行定义标签. XML 独立于硬件.软件以及应用程序 通常.建立完xml文件后首要的任务是:引入约束文件! 二.XML简 ...

  7. javaWeb web.xml 配置

    <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http:// ...

  8. 【JavaWeb】XML 文件

    XML 文件 简介 XML 是可拓展的标记性语言. XML 的主要作用: 用来保存数据,且这些数据具有自我描述性: 作为项目或模块的配置文件: 作为网络数据传输的格式,但是现在以 JSON 格式为主. ...

  9. JavaWeb 补充(XML)

    XML 1. 概念:Extensible Markup Language 可扩展标记语言 可扩展:标签都是自定义的. <user>  <student> 功能: 存储数据   ...

随机推荐

  1. dict built-in function

    映射类型:字典 字典是无序的,映射类型对象里哈希值和被指向的对象是一对多的关系,字典中的键必须是可哈希的,所有不可变的类型都是可哈希的,另外针对数字键来说,值相等的两个数字是相同的键,例如1和1.0: ...

  2. Oracle:热备时,突然断电情况处理

    我们在热备时,如果此时突然停电,再次启动时会发生什么情况呢? SQL> alter tablespace users begin backup; Tablespace altered. SQL& ...

  3. CodeBlocks+Qt(MinGW)配置

    1.安装CodeBlocks 官网:http://www.codeblocks.org/ 下载地址:http://www.codeblocks.org/downloads/26 有以下两种选择 cod ...

  4. 865C

    二分+期望dp 好神奇啊...出题人太神了! 我们发现dp之间的关系不满足是一个dag,那么我们只能用高斯消元,但是由于这里是取最小值,需要取min,也不能用高斯消元,于是我们想出了一个奇妙的方法 我 ...

  5. vmware实现与windows下的共享文件

    1 首先你得先设置一下windows下得共享 比如是准备共享D盘 那么右击 ----->属性------->高级共享勾上就OK勒 2那么vmware怎么设置呢? 打开vmware-> ...

  6. rbenv更新ruby后rails命令无效的解决方案

    创建: 2017/11/02 更新: 2018/02/02 增加rbenv使用方法的链接     rbenv的使用: http://www.cnblogs.com/lancgg/p/8281739.h ...

  7. bzoj 4871: [Shoi2017]摧毁“树状图”【树形dp】

    做不来--参考https://www.cnblogs.com/ezyzy/p/6784872.html #include<iostream> #include<cstdio> ...

  8. 哈夫曼费用计算C++

    #include<stdio.h> #include<string.h> #include<math.h> #include<iostream> #in ...

  9. 【poj2528】Mayor's posters

    Mayor's posters Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 64939   Accepted: 18770 ...

  10. Codeforces Round #261 (Div. 2) E

    Description Pashmak's homework is a problem about graphs. Although he always tries to do his homewor ...