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的操作

最新文章

  1. js 事件大全
  2. curl方法post一个数组
  3. HTTP协议 (三) 压缩
  4. T-SQL—理解CTEs
  5. Azure Table storage 之改进DynamicTableEntity类为其添加动态语言扩展
  6. [转载]部署Office Web Apps Server并配置其与SharePoint 2013的集成
  7. 重命名Administrator账号
  8. POJ 2001
  9. 【XCode7+iOS9】http网路连接请求、MKPinAnnotationView自定义图片和BitCode相关错误--备用
  10. 滑动开关效果 css3滑动开关】纯CSS3代码实现滑动开关效果-css3滑动效果-css3左右滑动
  11. ajax form表单提交 input file中的文件
  12. Spring多种加载Bean方式简析
  13. java获取文件行数
  14. Jenkins- job之间传参
  15. python 全栈开发,Day64(视图,触发器,函数,存储过程,事务)
  16. MVCJSONJQuery分页实现
  17. X32位 天堂2 二章/三章 服务端协议号修改方法
  18. 转载别人的一篇关于git的文章
  19. 不用IDE写C#的Hello World
  20. Eclipse技术: 项目文件中过滤.o文件

热门文章

  1. 「UOJ 514」通用测评号(生成函数)
  2. HiveHA机制源码分析
  3. Linux入门视频笔记一(基本命令)
  4. P1603 斯诺登的密码(JAVA语言)
  5. 开源的 Switch 模拟器——GitHub 热点速览 v.21.12
  6. .Net5 WPF快速入门系列教程
  7. kiali的服务降级和暗隐的有关问题
  8. 【Flutter 3-5】Flutter进阶教程——在Flutter中使用Lottie动画
  9. JMeter5.4.1源码IDEA构建&amp;二次开发(实战)
  10. java多种文件复制方式以及效率比较