zoukankan      html  css  js  c++  java
  • dom4j解析XML文件


    public class TestDom4j {
      Document doc = null;

      //初始化,给doc指定路径
      public TestDom4j() {
        SAXReader reader = new SAXReader();
        try {
          doc = reader.read("src/PhoneInfo.xml");
        } catch (DocumentException e) {
          e.printStackTrace();
        }
      }

      //遍历doc中的元素
      public void show() {
        //1.获取根节点
        Element root = doc.getRootElement();
        //2.获取根节点下的分支集合
        List<Element> brands = root.elements();
        //3.遍历根节点下的分支
        for(Element brand : brands) {
          System.out.println(brand.getName() + ":" + brand.attributeValue("name"));
          List<Element> types = brand.elements();
          for(Element type : types) {
            System.out.println(" " + type.getName() + ":" + type.attributeValue("name"));
          }
        }
      }

      //保存XML文件
      public void save(String path) {
        try {
          //1.创建写入器,并指定保存路径
          XMLWriter writer = new XMLWriter(new FileOutputStream(path), OutputFormat.createPrettyPrint());
          //2.从指定文件读取内容
          writer.write(doc);
        } catch (UnsupportedEncodingException e) {
          e.printStackTrace();
        } catch (FileNotFoundException e) {
          e.printStackTrace();
        } catch (IOException e) {
          e.printStackTrace();
        }
      }

      //在brand栏中添加id属性
      public void addAtt() {
        //1.获取根节点
        Element root = doc.getRootElement();
        List<Element> brands = root.elements();
        int i = 1;
        for(Element brand : brands) {
          brand.addAttribute("id", i + "");
          i++;
        }
        save("src/new_PhoneInfo.xml");
      }

      //增加节点
      public void addNodes() {
        //1.获取根节点
        Element root = doc.getRootElement();
        //2.在根节点下创建分支
        Element addBrand = root.addElement("Brand");
        //3.在新建的分支中增加属性
        addBrand.addAttribute("name", "iphone");
        //4.在新建的分支下再创建分支
        Element addType = addBrand.addElement("Type");
        addType.addAttribute("name", "iphone7");
        save("src/new_PhoneInfo.xml");
      }

      //删除节点
      public void delete() {
        //1.获取根节点
        Element root = doc.getRootElement();
        List<Element> brands = root.elements();
        //2.遍历根节点下的分支
        for(Element brand : brands) {
          //3.获取分支中的属性值
          if("华为".equals(brand.attributeValue("name"))) {
            root.remove(brand);
          }
        }
        save("src/new_PhoneInfo.xml");
      }

      public static void main(String [] args) {
        TestDom4j td = new TestDom4j();
        //td.show();
        //td.save();
        //td.addAtt();
        //td.addNodes();
        td.delete();
      }
    }

    附上XML文件对应的内容

    <?xml version="1.0" encoding="UTF-8"?>
    <PhoneInfo>
      <Brand name = "华为">
        <Type name = "Mate 10"></Type>
        <Type name = "Honor V10"></Type>
        <Type name = "畅玩7X"></Type>
      </Brand>
      <Brand name = "小米">
        <Type name = "小米6"></Type>
        <Type name = "小米5 Plus"></Type>
        <Type name = "MIX2"></Type>
        <Type name = "小米Note3"></Type>
      </Brand>
    </PhoneInfo>

  • 相关阅读:
    Android Studio cannot launch avd in emulator问题解决
    ios设备安装破解软件及自己下载的软件ipa教程
    解决数据库连接错误 您在wp-config.php文件中提供的数据库用户名和密码可能不正确,或者无法连接到localhost上的数据库服务器,这意味着您的主机数据库服务器已停止工作。
    地图工具类大集合
    在家云看景点的皮蛋TV
    在线本地视频翻译
    南瓜影视特权
    韩剧tv特权来了
    网盘下载合集,宽带多快,我多快
    白嫖永久免费电脑端美图秀秀
  • 原文地址:https://www.cnblogs.com/helloworldlx/p/8577068.html
Copyright © 2011-2022 走看看