Schema的快速入门

如果是简单元素直接  <element name=”” type=””></element>

Schema开发过程:

Sax 解的析原理

解析xml有两种技术   dom  和sax

4使用jaxp的sax方式解析xml

**Sax方法不能实现增删改查,只能做查询操作

**打印出整个文档

**执行parse方法,第一个参数xml路径,第二个参数  是事件处理器

**创建一个类,继承事件处理器的类

**重写里面的三个方法

*获取到所有name元素的值

/*

     * 1创建一个解析器工厂

     * 2创建解析器

     * 3执行 parse方法

     *

     * 4自己创建一个类,继承DefaultHandler

     * 5重写里面的三个方法

     */

//获取所有name

class Mydefault2 extends DefaultHandler{

    boolean flag = false;

    int idx = 1;

    @Override

    public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {

        //判断qName是不是name元素

        if("name".equals(qName)){

            flag = true;

        }

    }

    @Override

    public void characters(char[] ch, int start, int length) throws SAXException {

        //当flasg为true的时候,表示解析name元素

        //索引值是1

        if(flag == true && idx == 1){

            System.out.println(new String(ch,start,length));

        }

    }

    @Override

    public void endElement(String uri, String localName, String qName) throws SAXException {

        //把flag设置为false,表示name元素结束

        if("name".equals(qName)){

            flag = false;

            idx++;

        }

    }

}

5使用dom4j解析xml

*dom4j 是一个组织,针对xml解析,提供解析器dom4j

*不是javase  的一部分, 想要使用第一步怎么使用?

**导入dom4j提供的

6   使用dom4j查询xml’

查询所有name元素里面的值

1创建解析器

2得到一个·document

3得到根节点      getRootElement()

4得到所有的p1标签

*element(qname)

**获取标签下第一个子标签

**qname  标签名称

*elements(qname)

**获取标签面是这个名称所有子标签(一层)

**qname  标签名称

*elements()

**获取标签下面的所有子标签

5得到name

6得到name里面的值

7使用dom4j添加节点

8特定位置添加节点

//特定位置添加元素

    public static void addAgeBefore() throws Exception{

        //1创建解析器

//      SAXReader saxReader = new SAXReader();

        //2得到document

//      Document document = saxReader.read(Dom4jUtils.PATH);

        Document document = Dom4jUtils.getDocument(Dom4jUtils.PATH);

        //3得到根节点

        Element root = document.getRootElement();

        //4获取第一个p1

        Element p1 = root.element("p1");

        //5获取p1下面所有的元素   

        /*

         *    element()方法 返回list集合

         *    使用list方法  ,在指定位置添加元素

         *          ***  add(int index,E element)

         *               -第一个参数是  位置下标 ,从0开始

         *               -第二个参数是  要添加的元素

         *6回写xml

         */

        //5

        List<Element> list = p1.elements();

        //创建元素使用

        Element school = DocumentHelper.createElement("school");

        //在school下面创建文本

        school.setText("ecit");

        //特定位置添加

        list.add(1, school);

        //回写

        Dom4jUtils.xmlWriters(Dom4jUtils.PATH, document);

    }

9修改

10删除

11获取属性

12使用dom4j支持xpath的操作

Schema的快速入门的更多相关文章

  1. spring快速入门(三)

    一.在spring快速入门(二)的基础上,原先我们是采用构造方法完成对象的注入.这里还有其他的方法可以完成注入,通过set方法来完成. 修改UserActionImpl package com.mur ...

  2. spring快速入门(二)

    一.在spring快速入门(一)的基础上,我们来了解spring是如何解决对象的创建以及对象之间的依赖关系的问题 (比如client中依赖UserAction的具体实现,UserActionImpl中 ...

  3. OpenStack云计算快速入门之二:OpenStack安装与配置

    原文:http://blog.chinaunix.net/uid-22414998-id-3265685.html OpenStack云计算----快速入门(2) 该教程基于Ubuntu12.04版, ...

  4. 快速入门系列--WebAPI--01基础

    ASP.NET MVC和WebAPI已经是.NET Web部分的主流,刚开始时两个公用同一个管道,之后为了更加的轻量化(WebAPI是对WCF Restful的轻量化),WebAPI使用了新的管道,因 ...

  5. Toad快速入门

    Toad快速入门       在实际中,Toad的用户很少用到其强大的新特性,同时新用户的摸索式熟悉Toad往往花费更多的时间.为此,铸锐数码为每个新购买Toad客户,提供两人次的在线培训服务,帮助客 ...

  6. SpringMvc_快速入门,深入分析

    目录  一.前言二.spring mvc 核心类与接口三.spring mvc 核心流程图 四.spring mvc DispatcherServlet说明 五.spring mvc 父子上下文的说明 ...

  7. Spring IoC反转控制的快速入门

    * 下载Spring最新开发包 * 复制Spring开发jar包到工程 * 理解IoC反转控制和DI依赖注入 * 编写Spring核心配置文件 * 在程序中读取Spring配置文件,通过Spring框 ...

  8. 02_Spring控制反转案例快速入门

    Spring控制反转案例快速入门 1.下载Spring最新开发包 http://www.springsource.org/download/community 下载spring3.2 的开发包 目录结 ...

  9. Spring MVC 教程,快速入门,深入分析

    http://elf8848.iteye.com/blog/875830/ Spring MVC 教程,快速入门,深入分析 博客分类: SPRING Spring MVC 教程快速入门  资源下载: ...

随机推荐

  1. 《进击吧!Blazor!》系列入门教程 第一章 7.图表

    <进击吧!Blazor!>是本人与张善友老师合作的Blazor零基础入门教程视频,此教程能让一个从未接触过Blazor的程序员掌握开发Blazor应用的能力. 视频地址:https://s ...

  2. (数据科学学习手札112)Python+Dash快速web应用开发——表单控件篇(上)

    本文示例代码已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 这是我的系列教程Python+Dash快速web ...

  3. P2424 约数和 【整除分块】

    一.题目 P2424 约数和 二.分析 因为都是加法,那么肯定有的一个性质,即前缀和的思想,就是$$ { ans =\sum_{i=1}^y f(i)} - {\sum_{i=1}^x f(i)}   ...

  4. 《数据持久化与鸿蒙的分布式数据管理能力》直播课答疑和PPT分享

    问:hi3861开发板支持分布式数据库吗? 目前,分布式数据库仅支持Java接口,因此Hi3861没有现成的API用于操作分布式数据库. 问:分布式数据管理包括搜索吗? 分布式数据管理包括融合搜索能力 ...

  5. 这个Bug的排查之路,真的太有趣了。

    这是why哥的第 92 篇原创文章 在<深入理解Java虚拟机>一书中有这样一段代码: public class VolatileTest {    public static volat ...

  6. SDK音频测试流程

    概述 在上篇文章中,给小伙伴们讲述了sdk模板在渲染中的流程,我们简单来回顾一下,主要讲述了数据创建.素材替换.音频.文字等四部分,在上次讲述中也因为时间于原因没有特别仔细的去讲述他们.上次我们说到最 ...

  7. 创建ortools的Dockerfile

    技术背景 基于已有的Docker容器镜像,去创建一个本地的镜像,有两种方法:一种是在之前的博客中提到过的,使用docker commit的方案,也就是先进去基础系统镜像内部完成所需的修改,然后comm ...

  8. 【JVM进阶之路】七:垃圾收集器盘点

    在前面,我们已经了解了JVM的分代收集,知道JVM垃圾收集在新生代主要采用标记-复制算法,在老年代主要采用标记-清除和标记-整理算法.接下来,我们看一看JDK默认虚拟机HotSpot的一些垃圾收集器的 ...

  9. 前端使用bcrypt对密码加密,服务器对密码进行校验

    以前为了防止前端密码安全问题,都是对密码进行md5(password + salt). 有些也会用别的加密方式,但还是会存在撞库,彩虹表等破解常规密码. 因此使用bcrypt加密是一个不错的选择,因为 ...

  10. PAT (Advanced Level) Practice 1006 Sign In and Sign Out (25 分) 凌宸1642

    PAT (Advanced Level) Practice 1006 Sign In and Sign Out (25 分) 凌宸1642 题目描述: At the beginning of ever ...