使用JDOM操作XML
JDOM介绍
JDOM是使用Java语言编写的,用于读写及操作XML的一套组件,Jdom同时具有DOM修改文件的优点和SAX读取快速的优点。
JDOM的使用
首先下载JDOM的JAR包,本文使用的是jdom-2.0.5,下载地址:http://download.csdn.net/detail/onroads/9719611
在工程目录下新建一个lib文件夹,将下载的jar包中的jar文件拷贝到lib文件夹下
右键项目Build Path->Configure Build Path...,如下图:
选择Libraries->Add JARs...,添加lib文件夹中的jdom-2.0.5.jar
使用JDOM
JDOM主要的操作类如下表:
创建XML文件:
Map<String, String> map = new HashMap<>(); map.put("小明", "xiaoming@163.com"); map.put("翠花", "cuihua@163.com"); Document document = null; //定义根节点 Element addresslist = new Element("addresslist"); //声明一个Document对象 document = new Document(addresslist); Set<Entry<String, String>> set = map.entrySet(); Iterator<Entry<String, String>> iterator = map.entrySet().iterator(); int i=0; while(iterator.hasNext()){ Entry<String, String> mapentry = iterator.next(); //定义节点 Element linkman = new Element("linkman"); Element name = new Element("name"); Element email = new Element("email"); //定义属性 Attribute id = new Attribute("id", ++i+""); //设置节点内容 name.setText(mapentry.getKey()); email.setText(mapentry.getValue()); //将属性添加到节点 name.setAttribute(id); //连接节点 linkman.addContent(name); linkman.addContent(email); addresslist.addContent(linkman); } //用来输出XML文件 XMLOutputter out = new XMLOutputter(); //设置输出编码 out.setFormat(out.getFormat().setEncoding("GBK")); try{ //输出XML文件 out.output(document, new FileOutputStream("D:"+File.separator+"JdomXML.xml")); }catch(Exception e){ e.printStackTrace(); }
生成的xml文件如下:
<?xml version="1.0" encoding="GBK" standalone="no"?> <addresslist> <linkman> <name index="1">小丽</name> <email>xiaoli@163.com</email> </linkman> <linkman> <name index="2">李雷</name> <email>lilei@163.com</email> </linkman> </addresslist>
读取刚才生成的xml文件:
1 SAXBuilder sbBuilder = new SAXBuilder(); 2 Document doc = null; 3 try { 4 //找到Document 5 doc = sbBuilder.build("D:"+File.separator+"output.xml"); 6 //读取根元素 7 Element stu = doc.getRootElement(); 8 //得到全部linkman子元素 9 List list = stu.getChildren("linkman"); 10 11 for(int i=0;i<list.size();i++){ 12 Element element = (Element) list.get(i); 13 String name = element.getChildText("name"); 14 String index = element.getChild("name").getAttributeValue("index"); 15 String email = element.getChildText("email"); 16 System.out.print("<name" + " index="+index+">" + name+"</name>"); 17 System.out.println("<email>" + email+"</email>"); 18 } 19 20 } catch (Exception e) { 21 22 e.printStackTrace(); 23 }
解析结果: