前文:xml是一种可扩展标记型语言,html里面的标签是固定的,而xml里的标签可以自己定义,可以写中文的标签,html用来展示数据,而xml主要是用来存储数据。xml具体的应用体现在1. 不同系统之间的传输数据2. 用来表示生活中有关系的数据3. 经常用在配置文件。
第一步 去mvn仓库找到dom4j的依赖
(如果不是建的maven工程,而是普通java工程,去mvn仓库下载.dom4j的jar包,然后导包到自己的java工程就好了,建普通java工程的朋友看到这里以后直接跳到第三步)
第二步 把依赖写到maven项目里的pom.xml文档中‘
第三步 以如下xml文档为例 想创建一个像这个样子的xml文档
以上xml中的标签逻辑是这样的
school标签里有两个class标签,每个class标签里有3个student标签。
即一个学校有两个班 每个班有3个学生。
第四步:见代码(代码中做了详细的注释,没看懂可以留言)
//创建一个xml文档对象
Document document= DocumentHelper.createDocument();
//创建xml文档的根节点:学校
Element school=document.addElement("school");
//给该根节点赋值(赋值键对)
school.addAttribute("name","软帝教育");
//创建学校的子节点 班级 假设有两个班级
Element class1= school.addElement("class1");
Element class2= school.addElement("class2");
//给班级节点赋值(赋键值对)
class1.addAttribute("name","1班");
class2.addAttribute("name","2班");
//给两个班级的子节点再创建子节点:学生 并赋予键值对 这里追加的方式之间在创建student节点以后通过addAttribute(String,String)追加键值对
class1.addElement("student").addAttribute("id","101").addAttribute("name","A").addAttribute("age","18");
class1.addElement("student").addAttribute("id","102").addAttribute("name","B").addAttribute("age","18");
class1.addElement("student").addAttribute("id","103").addAttribute("name","C").addAttribute("age","18");
class2.addElement("student").addAttribute("id","104").addAttribute("name","D").addAttribute("age","18");
class2.addElement("student").addAttribute("id","105").addAttribute("name","E").addAttribute("age","18");
class2.addElement("student").addAttribute("id","106").addAttribute("name","F").addAttribute("age","18");
//xml格式化
OutputFormat format=new OutputFormat();
format.setIndentSize(2);//首行缩进2个字符
format.setNewlines(true);//一个节点一行
//生成持久化xml文件
File file=new File("d:\\yang.xml");
FileOutputStream fileOutputStream=new FileOutputStream(file);//把file对象转换成fileoutputStream对象 可以增加file对象的功能,这里用不到fileoutputStream的其他功能
XMLWriter xmlWriter=new XMLWriter(fileOutputStream,format);//把文件输出流对象和xml的格式输进去
xmlWriter.write(document);//把xml文档对象里的东西写进来
第五步 xml文档写好了,那么如何从一个xml文件中来读取我们想要的标签/节点呢? 见代码
File f=new File("d://yang.xml");
SAXReader saxReader=new SAXReader();//创建SaxReader对象 用来读取xml类型的文件
Document doc=saxReader.read(f);//将指定的xml文件读到 内存的文档对象中去
//获取xml文档里的根节点 学校节点
Element school_= doc.getRootElement();
//通过学校节点来读取学校的子节点 班级节点
List<Element> class_all= school_.elements();
//通过班级节点来获得学生节点
List<Element> student_1=class_all.get(0).elements();
//这里以1班为例 .get(0)
//是从班级集合中获得1班的班级
//.elements()是获得1班班级的子节点 即1班学生
for(Element e:student_1) 、
//迭代1班的所有的学生,并通过键值对输出他们的名字
{
System.out.println(e.attributeValue("name"));
}
没看懂的话欢迎留言