package com.wy.xml;

import java.io.File;
import java.util.Iterator;

import org.dom4j.Attribute;

import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

/**
* xml解析:读取
* @author Dnmngge
*
*/
public class XmlTest {

public static void main(String[] args) throws Exception {
  //1、创建SAXReader对象用于读取xml文件
  SAXReader reader = new SAXReader();
  //2、读取xml文件,得到Document对象
  Document doc = reader.read(new File("src/scores2.xml"));
  //3、获取根元素
  Element root = doc.getRootElement();
  //4、获取根元素下所有子元素
  Iterator<?> it = root.elementIterator();  
  while(it.hasNext()) {
    //取出元素
    Element e = (Element) it.next();
    System.out.println(e.getName());
    //获得id属性
    Attribute id = e.attribute("id");
    System.out.println(id.getName()+"="+id.getValue());
    //获取student的子元素
    Element name = e.element("name");
    Element course = e.element("course");
    Element score = e.element("score");
    //打印
    System.out.println(name.getName()+"="+name.getStringValue());
    System.out.println(course.getName()+"="+course.getText());
    System.out.println(score.getName()+"="+score.getText());
    System.out.println("--------------");
    }
  }

}

package com.wy.xml;

import java.io.File;
import java.io.FileWriter;
import java.util.Iterator;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

/**
* xml解析:创建
* @author Dnmngge
*
*/
public class XmlTest2 {

public static void main(String[] args) throws Exception {
  //1、通过DocumentHelper生成一个Document对象
  Document doc = DocumentHelper.createDocument();
  //2、添加并得到根元素
  Element root = doc.addElement("books");
  //3、为根元素添加子元素
  Element book = root.addElement("book");
  //4、为book元素添加属性
  book.addAttribute("id", "No.1");
  //5、为book添加子元素
  Element name = book.addElement("name");
  Element author = book.addElement("author");
  Element price = book.addElement("price");
  //6、为子元素添加文本
  name.addText("java从入门到放弃");
  author.addText("负能量");
  price.addText("1000");
  //7、格式良好的输出
  OutputFormat format = OutputFormat.createPrettyPrint();
  XMLWriter writer = new XMLWriter(new FileWriter(
  new File("src/book2.xml")), format);
  writer.write(doc);
  //8、释放资源
  writer.close();
  }

}

XML_DOM4J_20200415的更多相关文章

随机推荐

  1. vim多视窗操作

    命令行模式下输入:sp 1.txt 打开新的水平分屏视窗来编辑1.txt 命令行模式下输入:vsp 2.txt 打开新的垂直分屏视窗来编辑2.txt 普通模式下Ctrl+w s 将当前窗口分割成两个水 ...

  2. 一、mysql基础

    说明:学习视频参考尚硅谷--康师傅 第一章.数据库概述 1.为什么使用数据库?why? 持久化(persistence):把数据保存到可掉电式存储设备中以供之后使用.大多数情况下,特别是企业级应用,数 ...

  3. CSC落榜

    2021年5月31日21:00点,CSC公布结果,未通过.看到这,我感觉空气瞬间凝固,窒息,那一瞬间我无比平静,我以为我会哭,但是,却泣不成声,脑中第一时间想到得是,如何面对认识得人,全世界感觉都知道 ...

  4. CICD中一个巨头--jenkins

    持续化集成,发布离不开CICD,CICD中有最重要的一个程序就是jenkins,本章主要讲jenkins部署和建立项目任务 jenkins的出现,大大的提高了代码上线问题,通过图中可以看出,开发人员通 ...

  5. WPF使用MaterialDesign开源控件库

    在WPF控件效果这一块,很显然比winfrom要好很多,但想要做出真正好看的控件,我个人觉得还是需要用一些已有的东西比较好,比如MaterialDesign,控件种类多,自带很多图标,上手比较容易,还 ...

  6. ORACLE 创建只读用户

    create user cxuser01 identified by test123  default tablespace USERS temporary tablespace TEMP; --创建 ...

  7. 动态路由里,将component字符串改变为路由懒加载方法

    一.import写法 报错 function loadPageByRoutes(str) { // 传入的str为 '@/views/Home.vue' 这种格式 return () => im ...

  8. Vue全局方法配置

    在Vue项目开发中,肯定会有这样一个场景:在不同的组件页面用到同样的方法,比如格式化时间,文件下载,对象深拷贝,返回数据类型,复制文本等等.这时候我们就需要把常用函数抽离出来,提供给全局使用.那如何才 ...

  9. ARC(Automatic Reference Counting)自动引用计数 unowned、weak 使用区别

    自动引用计数 引用类型(类.函数.闭包) 当声明一个变量指向某个引用类型时 当前引用类型的引用计数就会加1 当变量不指向该类型时 引用类型就会 -1 当引用计数为0时  当前引用类型就会被系统回收 i ...

  10. Unity Random

    Random 不仅可以随机值,还可以随机其它属性,用了这么久,刚知道... 譬如: rotation  随机Rotation onUnitSphere  球体表面随机点 insideUnitCircl ...