xml教程

XML基础语法

和html超文本语言一样,只不过xml主要作用是存储数据,和配置文件作用

xml创建

<?xml version="1.0" encoding="UTF-8" ?>  //必写,定义xml版本和编码格式
<!DOCTYPE students SYSTEM  "student.dtd">//约束的一种(这是dtd约束),还有一种是schema约束

<students>
	<student number="s0001">
		<name>zs</name>
		<age>abc</age>
		<sex>yao</sex>
	</student>

</students>
DTD约束

DTD语法简单,但是约束力不强,如性别只能男和女这些不能约束

<!ELEMENT students (student*) > //开头第一个定义根元素,唯一!
<!ELEMENT student (name,age,sex)>//students的子元素,其中student下有name,age,sex子标签
<!ELEMENT name (#PCDATA)> 
<!ELEMENT age (#PCDATA)>
<!ELEMENT sex (#PCDATA)>
<!ATTLIST student number ID #REQUIRED> //创建属性number在student中,并且必需,和不能重复!

schema约束

schema语法难,约束力强大,在框架的配置中经常用到

<?xml version="1.0"?>
<xsd:schema xmlns="http://www.itcast.cn/xml" 		//命名空间 xml在引用约束的地址,随便写,不过一般用网址名称 
        xmlns:xsd="http://www.w3.org/2001/XMLSchema"	//名称空间 有了命名空间可以直接使用<xsd XXX>来使用不同schema约束文件的,简化格式。
        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"//引入shema约束,名称空间 实际地址
    <xsd:element name="students" type="studentsType"/>	//定义元素,type就当是id的意思
    <xsd:complexType name="studentsType">	//给type叫studentsType的标签进行描述
        <xsd:sequence>	//序列,标签顺序
            <xsd:element name="student" type="studentType" minOccurs="0" maxOccurs="unbounded"/>//最小0,最大无界
        </xsd:sequence>
    </xsd:complexType>
    <xsd:complexType name="studentType">	//给type叫studentsType的标签进行描述
        <xsd:sequence>
            <xsd:element name="name" type="xsd:string"/>	//字符串类型
            <xsd:element name="age" type="ageType" />	
            <xsd:element name="sex" type="sexType" />
        </xsd:sequence>
        <xsd:attribute name="number" type="numberType" use="required"/>
    </xsd:complexType>
    <xsd:simpleType name="sexType">	//给type叫sexType的标签进行描述
        <xsd:restriction base="xsd:string">	//限制文本输入
            <xsd:enumeration value="male"/>	//男
            <xsd:enumeration value="female"/>	//女
        </xsd:restriction>
    </xsd:simpleType>
    <xsd:simpleType name="ageType">
        <xsd:restriction base="xsd:integer">
            <xsd:minInclusive value="0"/>	//最小
            <xsd:maxInclusive value="256"/>	//最大
        </xsd:restriction>
    </xsd:simpleType>
    <xsd:simpleType name="numberType">
        <xsd:restriction base="xsd:string">
            <xsd:pattern value="itcast_\d{4}"/>	//正则:必需是itcast_4个数字格式
        </xsd:restriction>
    </xsd:simpleType>
</xsd:schema> 

xmlns:XXX 名称空间

标签<XXX:name>使用XXX约束的name元素(可以把XXX取消掉,直接用<name>元素,如果约束过多,还是带上<XXX:name>)

xsi:schemaLocation 引用schema地址,格式 名称空间 空格 命名空间(本地或者网络)

XML解析

无非是读,写


DOM:将文档加载内存,形成一颗dom树,将文档的各个组成部分封装成对象

优点:在内存形成dom树,可以对dom进行增删改查

缺点:dom占内存,过大xml速度会慢

Document

Element

Text

Attribute

Comment

SAX:逐行读取,基于事件驱动

优点:不占内存,速度快

缺点:只能读取,不能回写

startDocument

startElement

characters

endElement

endDocument

XML常用的解析器:

JAXP:sun公司提供的,支持dom和sax(sun公司自己都不用···)

JDOM:创建后分家,就出现底下那个

DOM4J:dom for java民间方式,非常好。支持dom

1.导入jar包dom4j.jar

2.创建解析器

SAXReader reader =new SAXReader();

3.解析xml获取document对象

Document document=reader.read(url);

DOM4j:

dom4j教程看https://dom4j.github.io/(简单哦了)

    public Document parse(URL url) throws DocumentException {	
        SAXReader reader = new SAXReader();
        Document document = reader.read(url);//把xml加载dom到内存中
        return document;//返回document对象
    }
public void bar(Document document) throws DocumentException {

    Element root = document.getRootElement();//获得根节点

    // iterate through child elements of root 遍历root的子节点
    for (Iterator<Element> it = root.elementIterator(); it.hasNext();) { 	//这种写法我挺支持的Iterator写在里面,用完就销毁。是个好技巧
        Element element = it.next();
        // do something		
    }

    // iterate through child elements of root with element name "foo"
    for (Iterator<Element> it = root.elementIterator("foo"); it.hasNext();) {
        Element foo = it.next();
        // do something
    }

    // iterate through attributes of root
    for (Iterator<ttribute> it = root.attributeIterator(); it.hasNext();) {
        Attribute attribute = it.next();	//获得属性
        // do something
    }
 }
public void treeWalk(Element element) {//递归xml遍历出所有的元素
	System.out.println(element.getName);
    for (int i = 0, i<element.nodeCount();i++) {
        Node node = element.node(i);
        if (node instanceof Element) {//判断是否是Element,是就递归,继续遍历元素里面的元素
            treeWalk((Element) node);
        }
    }
}


XPATH:是一门在xml文档中查找信息的语言

1.引入jaxen-1.1.6.jar

2.document.方法:

selectSingleNode("/书架/书[1]/书名") //寻找元素带书架下的第一个书元素的书名元素

selectNodes("//*") //遍历所有的标签,比dom4j的递归遍历简单多了

//为根目录下并且忽略深度,*代表所有元素

//@id 忽略深度匹配属性<bbb id="b1"/>

//BBB[@id] 忽略深度匹配BBB元素带id属性的元素

//BBB[not(@*)] 忽略深度匹配BBB元素不带属性的元素





1 XML 简介...................................................................................................................... 1 2 XML 的用途.................................................................................................................. 3 3 XML 树结构.................................................................................................................. 5 4 XML 语法规则.............................................................................................................. 8 5 XML 元素....................................................................................................................11 6 XML 属性....................................................................................................................13 7 XML 验证....................................................................................................................17 8 XML 验证器................................................................................................................19 9 XML 浏览器支持........................................................................................................19 10 查看XML 文件........................................................................................................20 11 使用 CSS 显示XML............................................................................................21 12 使用XSLT 显示XML .............................................................................................23 13 XML 解析器..............................................................................................................25 14 XML DOM ...............................................................................................................27 15 XML to HTML.........................................................................................................31 16 XMLHttpRequest 对象......... 17 XML 应用程序..........................................................................................................36 18 XML 命名空间(XML Namespaces )..............................................................40 19 XML CDATA............................................................................................................43 20 XML 编码..................................................................................................................45 21 XML DOM 高级......................................................................................................47 22 XML Don't...............................................................................................................49
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值