javaAPI解析XML文件有两种方式
1、DOM (Document Object Model 文档对象模型)
优点:把XML文件在内存中构造成树型结构,支持删除、修改、重新排列等多种功能;
缺点:如果文件比较大,内存有压力,解析时间会比较长。
2、SAX (Simple API for Xml 基于Xml的简单API)
把XML文件作为输入流。
SAX ,事件驱动。当解析器发现元素开始、元素结束、文本、文档的开始或结束等时,
发送事件,程序员编写响应这些事件的代码,保存数据。
优点:解析可以立即开始,速度快,没有内存压力
缺点:不能对节点进行修改
目前市面上两种解析XML文件的API: DOM4J/JDOM
DOM4J解析xml文件:
1、创建空白document文档对象
//创建一个空的文档对象Document doc = DocumentHelper.createDocument();
2、读取xml文件,返回document对象
//解析器SAXReader reader = new SAXReader();
//指定XML文件
File file = new File(fileName);
//开始解析,构建树型结构并返回Document doc = reader.read(file);
3、分析元素
//获得根元素,员工列表Element rootElmt = doc.getRootElement();//获取所有的员工列表
List list = rootElmt.elements("emp");//解析所有员工的元素集合
Iterator it = list.iterator();
while(it.hasNext()){
//员工的元素
Element empElmt = (Element)it.next();
//员工的子节点"id"的值 String empId = empElmt.elementText("id");
//员工的属性迭代器
Iterator attrIt = empElmt.attributeIterator(); while(attrIt.hasNext()){ //员工的属性 Attribute attr = (Attribute)attrIt.next(); //打印员工的属性的名和值 System.out.println(attr.getName()+"="+attr.getValue());
}
}
4、增加元素,并为元素设置数据或属性,删除元素
//为empElmt元素增加一个"id"子元素
Element idElmt = empElmt.addElement("id");//为"id"子元素设置值idElmt.setText("3");
//为emp元素增加type属性
empElmt.addAttribute("type", "leader");//为empElmt元素删除一个叫"id"的子元素
empElmt.remove(idElmt);
5、输出xml文件
//创建一个java.io包中的FileWriter对象,指定目标文件 FileWriter fw = new FileWriter(filename); //指定XML文件的输出格式 OutputFormat format = OutputFormat.createPrettyPrint(); format.setEncoding("utf-8"); //写出xml文件到操作系统 XMLWriter xw = new XMLWriter(fw,format);//指定参数 xw.write(doc); //写出文档对象
xw.close();
6、dom4j对XPath的支持(w3c的标准)
SAXReader reader = new SAXReader();
Document doc = reader.read(new File(fileName));
// 获得根元素,员工列表,绝对路径 "/emps"Node node = doc.selectSingleNode("/emps");
// 获取所有的员工列表,相对路径 "emp"
List list = node.selectNodes("emp");
// 根据条件获取员工列表
// 相对路径 emp/id
// 过滤条件 [@type='admin'] @后面跟属性,如果是元素直接写
// 运算符可以是 "=",">","<","or","and" List list = node.selectNodes("emp/id[@type='admin']");
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。