Javaweb之xml
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 特殊字符
< <
> >
& &
"表示双引号
&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的更多相关文章
- JavaWeb之XML详解
XML语言 什么是XML? XML是指可扩展标记语言(eXtensible Markup Language),它是一种标记语言,很类似HTML.它被设计的宗旨是传输数据,而非显示数据. XML标签没有 ...
- JavaWeb基础: XML基础知识
简介 XML:可扩展标记语言,W3C指定的用于描述结构化数据的语言,XML在实际开发中,经常用作软件的配置文件,以描述程序模块之间的依赖和组合关系. XML约束:XML常常用于软件配置管理,对于软件框 ...
- JavaWeb 4 XML
4 XML 1 XML入门 1.1 引入 HTML: 负责网页的结构 CSS: 负责网页的样式(美观) Javascript: 负责在浏 ...
- javaweb web.xml文件详解
web.xml文件详解 前言:一般的web工程中都会用到web.xml,web.xml主要用来配置,可以方便的开发web工程.web.xml主要用来配置Filter.Listener.Servlet等 ...
- 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 ...
- JavaWeb基础—XML学习小结
一.概述 是什么? 指可扩展标记语言 能干什么? 传输和存储数据 怎么干? 需要自行定义标签. XML 独立于硬件.软件以及应用程序 通常.建立完xml文件后首要的任务是:引入约束文件! 二.XML简 ...
- javaWeb web.xml 配置
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http:// ...
- 【JavaWeb】XML 文件
XML 文件 简介 XML 是可拓展的标记性语言. XML 的主要作用: 用来保存数据,且这些数据具有自我描述性: 作为项目或模块的配置文件: 作为网络数据传输的格式,但是现在以 JSON 格式为主. ...
- JavaWeb 补充(XML)
XML 1. 概念:Extensible Markup Language 可扩展标记语言 可扩展:标签都是自定义的. <user> <student> 功能: 存储数据 ...
随机推荐
- UVA-10827(前缀和降维)
题意: 给一个n*n的正方形,第一行和最后一行粘在一块,第一列和最后一列粘在一块,求这个环面上的最大的子矩形; 思路: 直接暴力是O(n^6)的复杂度,可以把前缀和求出来,这样就可以只用枚举四条边界就 ...
- iOS中NSNotification、delegate、KVO三者之间的区别与联系?
前面分别讲了delegate.notification和KVO的实现原理,以及实际使用步骤,我们心中不禁有个疑问,他们的功能比较类似,那么在实际的编程中,如何选择这些方式呢? 在网上看到一个博客上详细 ...
- django上课笔记1-目录介绍-路由系统-ORM操作
一.Django目录介绍 django-admin startproject mysite # 创建名为mysite的项目 cd mysite # 切换到该目录下 python manage.py s ...
- Codeforces34C【尺取】
题意: 输入一系列的数,连续数字则输出连续区间 看第一个案例就很明显 思路: 输入字符串输入,预处理一下. 写了个挫尺取- 贴一发挫code--. #include <bits/stdc++.h ...
- hdu 3038 How Many Answers Are Wrong【带权并查集】
带权并查集,设f[x]为x的父亲,s[x]为sum[x]-sum[fx],路径压缩的时候记得改s #include<iostream> #include<cstdio> usi ...
- Docker镜像文件操作
1什么是Docker镜像 Docker镜像是由文件系统叠加而成(是一种文件的存储形式).最底端是一个文件引导系统,即bootfs,这很像典型的Linux/Unix的引导文件系统.Docker用户几乎永 ...
- 详解基于linux环境MySQL搭建与卸载
本篇文章将从实际操作的层面,讲解基于linux环境的mysql的搭建和卸载. 1 搭建mysql 1.1 官网下载mysql压缩包 下载压缩包时,可以先把安装包下载到本地,再上传到服务器,也可以在 ...
- android 多线程(二)
1. 使用 AsyncTask 实现进度条 package com.test.network; import android.os.AsyncTask; import android.support. ...
- 4-redis数据过期策略
1 基本 redis也许只是用来存放临时数据.比如股市行情.游戏中一个持续一个月的活动等,都属于缓存数据,过了一段就没用了.如果没有过期策略,就会有大量垃圾数据在内存中堆积. 2 TTL time t ...
- Appium问题记录
1.Appium 提示覆盖安装Appium Android Input Manager for Unicode 问题 安卓手机在新版本中Appium 总是提示覆盖安装Appium Android In ...