HTML5-XML进阶

1.使用XML作为配置文件的方式完成模拟Tomcat

1.1.XML的语法

XMl的文档说明
*文档申明:通常出现在XML的第一行第一列。
*<?xml 属性名=“属性值” 。。。>
*Version :使用1.0
*encoding : 字符集,是使用浏览器打开时采用的默认的字符集的编码
*standalone: 描述XML文档是否需要依赖其他的文件。
XMl的注释
XML的元素
*元素(标签)
*名称中不能不含冒号(:)
*名称不能以字符“XMl”结尾。
*名称不能以数字或者标点符号开始
*名称不能包含空格
* 元素:xml文档中的标签
** 文档中必须有且只能有一个根元素
* 元素需要正确闭合。

* 元素需要正确嵌套
* 元素名称要遵守:
* 元素名称区分大小写
* 数字不能开头
XML的属性
*属性的名称规范与元素一致。
* 属性值必须用引号引起来。单双引号都行
**属性需要使用引号
XML 的特殊字符和CDATA区
*XMl的特殊字符
< < 小于
> >
& &
' ’ 单引号
&quto;” 引号
*XML的CDATA区:(CDATA:character Data)
* 文本:
* 转义字符:>
* CDATA: 里边的数据会原样显示
*

<![CDATA[
    //todo....
]]>

xml约束:
* 约束就是xml的书写规则
* 约束的分类:
dtd:
dtd分类:
* 内部dtd:在xml内部定义dtd
* 外部dtd:在外部文件中定义dtd
* 本地dtd文件:
* 网络dtd文件:
schema:
导入xsd约束文档:
1、编写根标签
2、引入实例名称空间 xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”
3、引入名称空间 xsi:schemaLocation=”http://www.itcast.cn/xml student.xsd”
4、引入默认的名称空间

2.XMl的解析

XML 的解析的方式:
****DOM解析(Document object model):
****SAX解析(simple API for XML):
*DOM和SAX的区别:
DOM:一次性将文档加载到内存,形成树形结构进行解析。
缺点:如果文档特别大,容易导致内存的溢出。
优点:对XML进行增删改查的操作。
SAX:事件驱动的方式,一行一行进行解析。
缺点:不能对文档进行增删改,只能查。
优点:如果文档也别大,不会导致内存的溢出。
针对两种解析的方式,不同的公司提供了不同的API的实现
*JAXP:SUN公司提供的一套XML解析的API。
*JDOM:
*DOM4J:API-DOM4J
*PULL: 主要应用在安卓客户端。
DOM4J解析

public class DOM4JDemo01 {
    @Test
    public void test01() throws Exception{
//      创建解析器
        SAXReader saxReader = new SAXReader();
//      解析XML文档
        Document document = saxReader.read("src/XML/demo01.xml");
//      获得根节点
        Element root = document.getRootElement();
//      查找根节点下的子节点  
        System.out.println(root.getName());

//      查找第一个Person元素
        Element pElement = root.element("person");
        Element nElement = pElement.element("name");
        Element aElement =pElement.element("age");
        Element gElement =pElement.element("gender");

        System.out.println(nElement.getText()+"\t"+aElement.getText()+"\t"+gElement.getText());
    }
}

3.XPath

*dom4J支持XPath的jar包
*jaxen-1.1-beta-6.jar
*dom4J的XPath支持的API:
*List document.selectNodes(String xPath)
*Node document.selectSingleNode(String xPath)

@Test
/*
 * Dom4J的xPath
 * */   
    public void test02() throws Exception{
//      创建解析器
        SAXReader saxReader = new SAXReader();
//      解析XML返回Document对象
        Document document = saxReader.read("src/XML/demo01.xml");
//      
        List<Node> list = document.selectNodes("//name");

        for (Node node : list) {
            System.out.println(node.getText());
        }

        List<Node> list1 = document.selectNodes("//person['@id']");

        for (Node node : list1) {
            Element element = (Element) node;
            System.out.println(element.attributeValue("id"));
        }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值