使用dom4j进行XML文件生成与解析

XML简介

XML是由万维网协议(w3c)推出的新一代数据交换的标准。
XML:Extensible Markup Language一种扩展性标示语言。可以存储数据和共享数据。是一种结构化文档和通用且适应性强的格式可以被用于任何的地方。
市面上常见的xml解析有很多,如JDom解析、sax解析dom4j解析等等
其中JDom解析是将整个xml文件以DOM树模型加载到内存中,优点:支持回溯,缺点:文档大于10M可能出现内存溢出
SAX解析是将即将需要用的节点加入内存,优点:不占内存,缺点:不支持回溯
dom4j解析是众多产品中平均性能最优的

xml文件生成

要提前导入dom4j.jar包

public  void  createXML() throws Exception{
	   //准备writer需要的document(元素,属性,值)
	  Document doc= DocumentHelper.createDocument();
	  //通过doc创建跟元素
	  Element root=doc.addElement("stus");
	  root.addElement("student")
	  .addAttribute("id", "001")
	  .addAttribute("name", "张三")
	  .addAttribute("sex", "男")
	  .setText("阿达!");
	  root.addElement("student")
	  .addAttribute("id", "002")
	  .addAttribute("name", "李四")
	  .addAttribute("sex", "男")
	  .setText("阿达达!");
	   //目标文件
	   File  file=new File("D://ccc");
	   if(!file.exists()){
		   file.mkdir();
	   }
	   //创建输出流,关联目标文件
	   OutputStream out=new FileOutputStream(file+"//"+"4.xml");
	   //设定书写xml格式和编码集
	   OutputFormat format=OutputFormat.createPrettyPrint();
	   format.setEncoding("UTF-8");
	   //将xml写入到指定的文件中  
	   XMLWriter writer=new XMLWriter(out, format);
	   writer.write(doc);
	   writer.flush();
	   writer.close();
	   out.close();
   }

xml文件解析

  //解析指定的xml文件
   public void  parseXMLTest() throws Exception{
	   //关联源文件
	   File file=new File("D://3.xml");
	   //创建xml解析器
	   SAXReader reader=new SAXReader();
	   //通过解析器解析文件
	   Document doc=reader.read(file);
	   //通多doc得到根元素
	   Element root=doc.getRootElement();
	   //得到根元素下的子元素
	   List<Element> list=root.elements();
	   //循环遍历解析子元素
	   for (int i = 0; i < list.size(); i++) {
		 /*String  name= list.get(i).attributeValue("name");
		 String addr=list.get(i).getText();
		 System.out.println(addr);*/
		Attribute attrName= list.get(i).attribute("name");
		System.out.println(attrName.getValue());
	   }
   }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值