zoukankan      html  css  js  c++  java
  • JavaSE基础之 XML(可扩展标记语言)

    一.知识点

             * xml 数据
             * xml 是一种国际通用的数据格式
             * 最大优点 跨平台
             *
             * xml 是一种 标记型语言 标签<></> 标签都是 成对 出现
             *
             * 了解xml数据格式
             * 如何利用java代码生成xml数据
             * 如何使用xml数据(解析)
             *       解析: 将数据提取出来的过程
             *
             * jar包: dom4j-1.6.1.jar
             *     如何导入jar包:
             *          1.先创建一个文件夹 用于存放jar包
             *          2.在工程根目录下创建libs文件夹 点击根目录右键 new-->Directory-->取名libs
             *          3.将jar包复制粘贴到libs 文件夹中
             *          4.选中jar包右键-->Add as library —>确定(出现小三角则成功)

    *创建XML文档
            //第一步 创建document(文档)对象
            Document document = DocumentHelper.createDocument();
    
            //第二步 创建根标签 所有标签的类型都是Element
            Element root = DocumentHelper.createElement("root");
    
            //将根标签放入document对象
            document.setRootElement(root);
    
            //可以为标签添加属性
            //参数1 属性名   参数2 属性值
            root.addAttribute("desc","这是一个根标签");
    
            //创建子标签
            Element traffic =root.addElement("traffic");
    
            //在子标签中再添加子标签
            Element brand = traffic.addElement("brand");
    
            //为子标签添加内容
            brand.setText("lambo");
            Element price = traffic.addElement("price");
            price.setText("600万元");
            Element color = traffic.addElement("color");
            color.setText("宝石蓝");
    
            /*--------------------生成xml文件-------------------------*/
    
            //首先创建一个文件
            //文件路径一定确保正确
            File file = new File("xml_file/newXml.xml");
            try {
                FileOutputStream fos = new FileOutputStream(file);
    
                //对生成的xml文件进行处理
                OutputFormat format = new OutputFormat();
    
                //换行
                format.setNewlines(true);
    
                //设置编码格式
                format.setEncoding("utf-8");
    
                //设置缩进 两个tab
                format.setIndent("      ");
    
                //!!!最最最核心代码  编写file
                XMLWriter writer = new XMLWriter(fos,format);
                writer.write(document);
    
                //注意最后的操作 关闭流
                writer.close();
                fos.close();
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }


    *XML文档解析
     * 解析:
             * 将某种数据格式里面的内容提取出来
             * 转化为我们可以使用的格式

    //首先创建一个集合(或Map) 存放解析好的对象(数据)
            List<Book> books = new ArrayList<>();
    
            //找到要解析的文件
            File file = new File("xml_file/newXml3.xml");
    
            //SAX解析方式 创建解析用的对象
            SAXReader reader =new SAXReader();
    
    
            try {
                //读文件获取document对象
                Document document = reader.read(file);
    
                //解析原则 从外向里一层一层解析
                //获取根标签
                Element library = document.getRootElement();
    
                //getName 是获取标签的名字
                //System.out.println("根标签的名字是: " + library.getName());
    
                //attribute("desc").getData() 获取标签里的属性内容
                //System.out.println(library.attribute("desc").getData());
    
                //迭代器遍历!!!!
                //创建迭代器对象 都是Element类型的对象
                Iterator<Element> libraryIterator = library.elementIterator();
    
                //while循环
                while (libraryIterator.hasNext()) {
                    //用于存放遍历以后的结果
                    Book book = new Book();
    
                    //获取子标签
                    Element bookElement =libraryIterator.next();
    
                    //获取子标签的名字
                    //System.out.println(bookElement.getName());
    
                    //获取子标签里面属性内容 key值
                    //System.out.println(bookElement.attribute("type").getData());
    
                    //创建子标签的迭代器对象
                    Iterator<Element> bookIterator = bookElement.elementIterator();
                    while (bookIterator.hasNext()) {
    
                        //获取孙子标签
                        Element element = bookIterator.next();
                       // System.out.println(element.getName());
                       // System.out.println(element.getData());
    
                        //判断子标签的名字
                        if (element.getName().equals("name")){
                            //获取对应子标签的内容
                            String name = element.getText();
                        //    System.out.println(name);
    
                            //将内容设置给book对象进行储存
                            book.setName(name);
                        }
                        if (element.getName().equals("kind")){
                            String kind = element.getText();
                            book.setKind(kind);
                        }
                        if (element.getName().equals("price")){
                            String price = element.getText();
                            book.setPrice(price);
                        }
                        if (element.getName().equals("num")){
                            String num = element.getText();
                            book.setNum(num);
                        }
    
                    }
                    books.add(book);
                }
    
            } catch (DocumentException e) {
                e.printStackTrace();
            }
    
            for (Book book : books) {
                System.out.println(book);
            }
        }
  • 相关阅读:
    SpringMVC的入门示例
    [PTA] 数据结构与算法题目集 6-1 单链表逆转
    [PTA] L3-015 球队“食物链”
    [PTA] 1001. 害死人不偿命的(3n+1)猜想 (Basic)
    [PTA] 1002. 写出这个数 (Basic)
    [opengl] 画一个可移动的自行车 二维几何变换(平移、旋转、缩放)
    css inline-block 水平居中
    css 图片裁剪显示
    [leetcode] 19. Remove Nth Node From End of List (Medium)
    [leetcode] 20. Valid Parentheses (easy)
  • 原文地址:https://www.cnblogs.com/luke-liuqi/p/9338761.html
Copyright © 2011-2022 走看看