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 }

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

你可能感兴趣的:(dom4j)