• dom4j


    public class Dom4jTest { // Dom4j解析xml
        // 因为所有的方法都需要Dom树
        static Document document = null;
        static Element root = null;
    
        public static void main(String[] args) {
            // 获取dom树
            getDocument();
            // addPhone();
            deletePhone();
            updatePhone();
            showPhone();
        }
    
        // 解析xml文件
        public static void getDocument() {
            SAXReader reader = new SAXReader();
            try {
                document = reader.read("收藏信息.xml");
                root = document.getRootElement();// 获取根节点
            } catch (DocumentException e) {
                e.printStackTrace();
            }
        }
    
        /**
         * 显示所有的手机信息
         */
        public static void showPhone() {
            // 遍历所有的节点
            Iterator itBrand = root.elementIterator();
            while (itBrand.hasNext()) {
                Element brand = (Element) itBrand.next();
                System.out.println("手机的品牌是:" + brand.attributeValue("name"));
                System.out.println("手机的编号是:" + brand.attributeValue("id"));
                System.out.println("===========下面是子节点============");
                Iterator itType = brand.elementIterator();
                while (itType.hasNext()) {// 获取手机型号
                    Element type = (Element) itType.next();
                    System.out.println("手机的型号是:" + type.attributeValue("name"));
                    // 输出文本节点的值
                    if (!type.getText().equals("")) {
                        System.out.println(type.getTextTrim());
                    }
                }
            }
    
        }
    
        // 保存xml信息
        public static void save(String path) {
            OutputFormat format = null;
            XMLWriter writer = null;
            try {
                // dom4j的转换器 不用使用 new   createPrettyPrint底层有 new
                format = OutputFormat.createPrettyPrint();
                // 写入xml文件
                writer = new XMLWriter(new FileWriter(path), format);
                writer.write(document);
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                // 关流
                try {
                    writer.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    
        // 新增节点
        public static void addPhone() {
            Element element = root.addElement("Brand");
            // 节点设置属性
            element.addAttribute("name", "黑莓");
            // 节点下面新增子节点
            Element type = element.addElement("Type");
            type.addAttribute("name", "A1");
            // 保存 省略 我们 节点之间的拼接! dom需要拼接
            save("收藏信息.xml");
        }
    
        // 删除
        public static void deletePhone() {
            // 获取所有Brand
            Iterator brand = root.elementIterator();
            while (brand.hasNext()) {
                Element element = (Element) brand.next(); // 拿到每一个Brand
                // 获取属性值 判断是不是 要删除的对象
                if (element.attributeValue("name").equals("黑莓")) {
                    element.getParent().remove(element);
                }
            }
            save("收藏信息.xml");
        }
    
        // 修改
        public static void updatePhone() {
            // 获取所有Brand
            Iterator brand = root.elementIterator();
            while (brand.hasNext()) {
                Element element = (Element) brand.next(); // 拿到每一个Brand
                // 获取属性值 判断是不是 要修改的对象
                if (element.attributeValue("name").equals("哇哈哈")) {
                    element.attribute("name").setValue("哇哈哈哈哈");
                }
            }
            save("收藏信息.xml");
        }
    
    }

    作者:Rick__想太多先森

    出处:http://www.cnblogs.com/xtdxs/

    注意:本文仅代表个人理解和看法哟!和本人所在公司和团体无任何关系!

  • 相关阅读:
    成为数据科学家并不难
    大数据分析的众包平台—Kaggle
    如何写一份好的数据分析报告
    配置java环境时,java的path地址放在其他地址的前面还是后面?
    js:随记
    JS:JSP Servlet
    [swustoj 1088] 德州扑克
    [swustoj 1092] 二分查找的最大次数
    [swustoj 371] 回文数
    [swustoj 1097] 2014
  • 原文地址:https://www.cnblogs.com/xtdxs/p/6410272.html
Copyright © 2020-2023  润新知