javawebDay1 xml与tomcat
一、xml
1.xml基础
1.xml extendsible markup language 可扩展的标记语言。
2.作用:
1.可以用来保存数据。
2.可以用来做配置文件
3.数据传输载体
3.文档结构图:倒状树形结构
4.声明定义:文档声明必须在第一行
<?xml version="1.0" encoding="UTF-8"?>
1.standalone=“yes or no”:文档是否独立
5.encoding详解:
1.计算机存储文字时存储的是二进制信息,这些二进制根据微软默认的编码进行解码存储。
2.解决乱码:用什么编码保存的,就用什么编码读取。
3.gb2312 升级版 GBK
4.元素的定义:就是<>括起来的都是
5.文档声明下的第一个标签是根元素
6.属性定义:<元素名 属性名称=“属性值”></元素名>
7.注释:
二、CDATA区
1.转义字符:
- < <
2.CDATA:内部的所有的东西都会被解析器忽略
3.CDATA区段开始<![CDATA["要被忽略的内容"]]>
4.使用:如果某段字符串里面有很多的字符,并且里面包括了类似标签或者关键字的这种信息,不想让xml的解析器去解析,那么可以使用CDATA来包装。通常用于在服务器给客户端返回数据时用到。
三、xml解析方式
1.xml解析就是获取元素里面的字符数据或属性数据
1.DOM解析(document object model 以文档的形式解析,形成树状结构):全读取再解析
1.概念:DOM:把整个xml文件全部读取到内存中,形成树状结构,整个文件称为document对象,属性对象Attribute对象,所有的元素节点对应Element对象,文本也可以称为Text对象,以上所有的对象都可以称为Node节点。
2.使用于小型xml文件,如果xml特别大,可能造成内存溢出,可以对文档进行增删
2.SAX解析(simple api for xml):基于事件驱动,读取一行解析一行。
1.不会造成内存溢出,不能进行增删,只能查询
四、解析xml的解决方案或手段
1.dom4j用法:
1.创建SaxReader对象
2.指定解析的XML
3.获取根元素
4.根据根元素获取子元素或者下面的子孙元素
package Day1;
import java.io.File;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class Test1 {
public static void main(String[] args) {
try {
//1.创建sax对象
SAXReader reader = new SAXReader();
//2.指定解析的xml源
Document document = reader.read(new File("src/Day1/demo.xml"));
//3.得到元素
//3.1得到根元素
Element rootElement = document.getRootElement();
System.out.print(rootElement.getName());
//3.2得到根元素里面第一个子元素
System.out.println(rootElement.element("stu").getName());
//3.3得到根元素里面第一个子元素的第一个子元素的值(对于根元素而言,是其孙)
//获取元素值,getText();getStringValue();
System.out.println(rootElement.element("stu").element("age").getStringValue());
System.out.println(rootElement.element("stu").element("age").getText());
//4.1 获取根元素里面的所有的子元素
List<Element> elements = rootElement.elements();
//4.1遍历根元素下的所有子元素及其值
for (Element element : elements) {
String name = element.element("name").getText();
String age = element.element("age").getText();
String address = element.element("address").getText();
System.out.println("姓名:\t"+name+"年龄:\t"+age+"地址:\t"+address);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
2.xpath用法:
1.dom4j里面支持Xpath的写法,xpath其实是xml的路径语言,支持我们在解析xml时,快速定位到具体的某一个元素
2.步骤:
1.添加jar包依赖,jaxen-1.1-beta-6.jar
2.根据xpath语法规则查找
五、xml约束
1.DTD约束,约束xml编写的条件
1.语法自成一派,出现早,可读性、差
2.使用方法一
<!ELEMENT stus (stu)>
<!ELEMENT stu (name,age)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)> <!--parser charcter date-->
<?xml version="1.0" encoding="UTF-8"?>
<!-- 引入约束 -->
<!-- 文档类型 根标签 本地还是网络 dtd路径/dtd名 -->
<!DOCTYPE stus SYSTEM "demo1.dtd">
<stus>
<stu>
<name >张三</name>
<age>25</age>
</stu>
</stus>
3.第二种:
<?xml version="1.0" encoding="UTF-8"?>
<!-- 引入约束 -->
<!-- 文档类型 根标签 本地还是网络 dtd路径/dtd名 -->
<!DOCTYPE stus [
<!ELEMENT stus (stu)>
<!ELEMENT stu (name,age)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)> <!--parser charcter date-->
]>
<stus>
<stu>
<name >张三</name>
<age>25</age>
</stu>
</stus>
4.使用网络上的约束导入:
<!DOCTYPE stus PUBLIC "//UNKNOWN/" "unknown.dtd">
5.1声明元素:<!ELEMENT 元素名称 类别> or <!ELEMENT 元素名称 (元素内容)> ,声明空元素<!ELEMENT 元素名称 EMPTY>
5.2
5.声明属性: <!ATTLIST 元素名称 属性名称 属性类型 默认值>,<!ATTLIST payment type CDATA "check">
2.Schema约束
1.是一个xml文件,使用xml语法规则,xml解析器比较方便
上一篇: Request源码浅析
推荐阅读
-
php与XML、XSLT、Mysql的结合运用,代码篇_PHP教程
-
如何提升Idea启动速度与Tomcat日志乱码问题
-
Windows(Vertrigo)下Apache与Tomcat的整合_PHP教程
-
基于mod_proxy+Apache 2.2.16+Tomcat 7的负载均衡与集群配置
-
PHP与XML结合的网站编程_PHP教程
-
Linux下Tomcat与Apache Web服务器的整合
-
JavaScript实现的XML与JSON互转功能详解
-
HTML XML XHTML DHTML区别与联系_html/css_WEB-ITnose
-
有关json与xml的课程推荐10篇
-
探讨:array2xml和xml2array以及xml与array的互相转化