一、什么是XML?
定义:
可扩展的标记语言,是独立于硬件和软件的一种信息传输工具,一般用于web应用程序中。
使用场景:
框架的配置文件(*.xml)
以前,前端与后端之间的数据交互使用的就是XML,由于其的不便利性,如今已改为使用JSON(传输工具)。
二、XML文件中的内容说明

注意:
1、第一行是XML的指令。
2、元素的名字可以自定义,根元素只能有一个,根元素中可以有多个子元素。
三、解析XML文件
目的:为了获取具体的name、job内容。
此时需要用到第三方jar包(dom4j.jar):
点击项目名->new folder(lib)->导入jar包->Build Path

package day20200622;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class ReadXmlFile {
public static void main(String[] args) throws DocumentException {
//1、创建SAXReader对象,用来获取xml中的文件内容
SAXReader sr = new SAXReader();
//2、读取xml文件,调用read(file)方法返回的是一个Document对象
//该对象中包含了xml中所有元素对应的节点
Document doc = sr.read("xml/hero.xml");//此处抛出了异常
//System.out.println(doc);
//3、解析doc文件,获取我们想要的内容
//3-1获取doc中的根目录,Element类表示xml中的元素类
Element root = doc.getRootElement();
//3-2获取根元素的名称
System.out.println(root.getName());//heros
//3-3获取指定元素下面的所有元素
//因为,不止一个,所以用集合去接收
List<Element> eles = root.elements();
//4、遍历集合
//way one:适合未知属性名(name,job)的情况
// for(Element ele : eles) {
// //ele代表了hero那一层了,还要继续解析
// List<Element> eles1 = ele.elements();
// for(Element ele1 : eles1) {
// //可以输出name、job的内容
// System.out.println("元素的名称:"+ele1.getName()+",元素的内容:"+ele1.getText());
// }
// }
//way two:适合已知属性名的情况
for(Element ele : eles) {
String name = ele.elementText("name");
String job = ele.elementText("job");
String id = ele.attributeValue("id");
System.out.println(name);
System.out.println(job);
System.out.println(id);
}
}
}
way one 输出效果:
way two 输出效果:

四、使用代码生成XML文件
package day20200622;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.XMLWriter;
public class CreatXml {
public static void main(String[] args) throws IOException {
//创建一个字节输出流,指向要创建的文件
OutputStream os = new FileOutputStream("xml/hero1.xml");
//1、创建XMLWriter对象
XMLWriter xw = new XMLWriter(os);
//2、创建Document对象,通过自定义的方法
Document doc = creatDocument();
//3、将doc对象写入到xml中
xw.write(doc);
//4、关流
xw.close();
os.close();
System.out.println("写入完成");
}
/**
* 设定xml文件的内容
* @return
*/
private static Document creatDocument() {
//创建Document对象
Document doc = DocumentHelper.createDocument();
//1、添加元素对象(搭架构)
//1-1第一个添加进去的元素就是根元素
Element root = doc.addElement("heros");
//1-2在根元素中添加其他元素
Element sub = root.addElement("hero");
//1-3添加name、job元素
Element su1 = sub.addElement("name");
Element su2 = sub.addElement("job");
//2、设置内容
su1.setText("鲁班七号");
su2.setText("射手");
//id属性要添加到hero上面
//在指定元素中添加属性 addAttribute("属性名称", "属性值")
sub.addAttribute("id", "1");
return doc;
}
}
效果显示:

这样子显示不够清楚明白,所以要去规定显示的格式,格式化输出XML:
//创建一个字节输出流,指向要创建的文件
OutputStream os = new FileOutputStream("xml/hero1.xml");
//格式化输出XML
OutputFormat of = new OutputFormat();
//调整缩进的格式
of.setIndent(true);
//设置换行
of.setNewlines(true);
//创建XMLWriter对象
XMLWriter xw = new XMLWriter(os,of);
显示效果:

本文介绍了XML的基本概念,XML文件的内容结构,并详细讲解了如何在Java中解析XML文件,以及利用代码生成格式化的XML文件。解析XML时,提到了使用dom4j库的方法以及输出效果。
747

被折叠的 条评论
为什么被折叠?



