Dom4j解析xml

前些时候,需要写一个小的对账应用,需要传送的对账文件名是用xml封装,然后使用socket传送的。在这个过程中,设计到一些目录下文件的查找 ,txt文件内容解析,xml文件内容解析,socket传送,定时执行,等功能。在这里,仅仅把最通用的xml文件解析记录下来。

解析xml文件有两种方式,一种是利用Dom去解析,这种方式写起代码比较麻烦,对于刚入手的程序员来说比较容易出问题;第二种就是使用Dom4j包去解析

在要使用Dom4j包的时候,肯定要先引入包,这个包可以在网上自己找地方下载,满世界都有。有51cto帐号的可以去这里下载:http://down.51cto.com/data/242098

  
  
  
  
  1. import java.io.File;  
  2.  import java.io.FileWriter;  
  3.  import java.io.IOException;  
  4.  import java.io.Writer;  
  5.  import java.util.Iterator;  
  6.    
  7.  import org.dom4j.Document;  
  8.  import org.dom4j.DocumentException;  
  9.  import org.dom4j.DocumentHelper;  
  10.  import org.dom4j.Element;  
  11.  import org.dom4j.io.OutputFormat;  
  12.  import org.dom4j.io.SAXReader;  
  13.  import org.dom4j.io.XMLWriter;  
  14.  /**  
  15.  * @author Icer  
  16.  */ 
  17.    
  18.  public class Dom4jDemo{  
  19.  /**  
  20.  *  
  21.  * @param fileName 生成的xml文件名  
  22.  * @param txtName 包含的对账文件txt文件名  
  23.  */ 
  24.  public void createXml(String fileName,String txtName) {  
  25.  Document document = DocumentHelper.createDocument();  
  26.  Element root = document.addElement("root");  
  27.  Element head = root.addElement("head");  
  28.  Element type = head.addAttribute("type""0");  
  29.  Element code = head.addAttribute("code""3003");  
  30.  Element yhlb = head.addElement("yhlb");  
  31.  yhlb.setText("01");  
  32.  Element username = head.addElement("username");  
  33.  username.setText("gsyh");  
  34.  Element password = head.addElement("password");  
  35.  password.setText("zheshimima");  
  36.  Element body = root.addElement("body");  
  37.  Element data = body.addElement("data");  
  38.  Element dzwjm = data.addElement("dzwjm");  
  39.  dzwjm.setText(txtName);  
  40.  try {  
  41.  //写入文件  
  42.  Writer fileWriter = new FileWriter(fileName);  
  43.  OutputFormat format = OutputFormat.createPrettyPrint();  
  44.  XMLWriter xmlWriter = new XMLWriter(fileWriter,format);  
  45.  xmlWriter.write(document);  
  46.  xmlWriter.close();  
  47.  } catch (IOException e) {  
  48.  System.out.println(e.getMessage());  
  49.  }  
  50.    
  51.  }  
  52.  /**  
  53.  *  
  54.  * @param fileName 要解析的文件名  
  55.  * @return 解析xml文件得到的需要对账的文件名  
  56.  */ 
  57.  public String parserXml(String fileName) {  
  58.  String findFileName = "";  
  59.  File inputXml = new File(fileName);  
  60.  SAXReader saxReader = new SAXReader();  
  61.  try {  
  62.  Document document = saxReader.read(inputXml);  
  63.  Element root = document.getRootElement();  
  64.  for(Iterator i = root.elementIterator();i.hasNext();){  
  65.  Element head = (Element) i.next();  
  66.  for(Iterator j = head.elementIterator();j.hasNext();){  
  67.  Element elem = (Element) j.next();  
  68.  System.out.println(elem.getName()+":"+elem.getText());  
  69.  for(Iterator k=elem.elementIterator();k.hasNext();){  
  70.  Element last = (Element) k.next();  
  71.  System.out.println(last.getName()+":"+last.getText());  
  72.  findFileName = last.getText();  
  73.  }  
  74.    
  75.  }  
  76.  }  
  77.  } catch (DocumentException e) {  
  78.  System.out.println(e.getMessage()+"hello");  
  79.  }  
  80.  System.out.println("dom4j parserXml");  
  81.  return findFileName;  
  82.  }  
  83.  /**  
  84.  * 测试main方法  
  85.  * @param args  
  86.  */ 
  87.  public static void main(String[] args){  
  88.  Dom4jDemo demo = new Dom4jDemo();  
  89.  demo.createXml("D://request.xml","test.txt");  
  90.  demo.parserXml("e://request.xml");  
  91.  } 

以上是我在其中写下的代码,生成的文件为项目中要用到的。晚了,休息了。
不具体解释了。有了问题在网上再查就好了。

你可能感兴趣的:(java,xml,解析,dom4j)