dom4j 是一种解析 XML 文档的开放源代码 XML 框架。
参考google所有出来的关于dom4j的例子,自己学着写了两个范例,想用它来写文件存储器的索引文件。
1、首先下载dom4j的包,可以到
http://dom4j.sourceforge.net/网站下载。
2、创建Document。
public Document createDocument() { Document document = DocumentHelper.createDocument(); document.addComment("索引文件管理列表!"); Element root = document.addElement( "Root" );
Element sysDir1 = root.addComment("存储文件工作目录") .addElement( "SysDir" ).addText("C:\\document\\aa\\"); for(int i = 0;i<5;i++) { String guid = "***"+i; Element task1 = root.addElement( "Task" ); Element guid1 = task1.addElement("GUID").addText(guid); Element proir1 = task1.addElement("Proir").addText((i+2)+""); Element status1 = task1.addElement("Status").addText((i+5)+""); Element isSend1 = task1.addElement("IsSend").addText("true"); } return document; } |
3、生成XML文件。
public boolean CreatXML(Document doc) { boolean ret = false; try { //输出数据到XML文件中 OutputFormat format = OutputFormat.createPrettyPrint(); //xml文件字符集为GBK format.setEncoding("GBK"); FileOutputStream fos = new FileOutputStream("d:\\content.xml"); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(fos , "GBK")); XMLWriter writer = new XMLWriter(bw , format); writer.write(doc); bw.close(); ret = true; }catch(Exception ex) { System.out.println(ex.toString()); } return ret; } |
4、读取XML文件。
public Document read(String fileName) throws MalformedURLException, DocumentException { SAXReader reader = new SAXReader(); Document document = reader.read(new File(fileName)); return document; } |
5、测试例子
public static void main(String s[]) { dom4jmain xml=new dom4jmain(); Document doc = xml.createDocument(); xml.CreatXML(doc); try { Document doc1 = xml.read("D:\\content.xml"); Element root = xml.getRootElement(doc1); boolean isDel = false; for(int i =0; i < root.nodeCount(); i ++) { Node node = root.node(i); String nodexml = node.asXML(); if(nodexml.trim().equals("")) continue; if (node instanceof Element) { if(node.getName().equals("Task")) { System.out.println("///////////////////////"); System.out.println(node.asXML()); Element enode = (Element)node; String guid = ""; for(int j =0; j < enode.nodeCount(); j ++) { Node chnode = enode.node(j); nodexml = chnode.asXML(); if(nodexml.trim().equals("")) continue; //获取GUID if(chnode.getName().equals("GUID")) { guid = chnode.getText(); } //修改属性 if(guid.equals("***1") && chnode.getName().equals("IsSend")) { chnode.setText("false"); } //删除节点设置 if(guid.equals("***2")) { isDel = true; } System.out.println("<Task>"+chnode.getName()+"="+chnode.getText()); } } else if(node.getName().equals("SysDir")) { System.out.println("<SysDir>"+node.getName()+"="+node.getText()); } } //删除节点 if(isDel) { root.remove(node); isDel = false; } } //增加节点 Element task1 = root.addElement( "Task" ); Element guid1 = task1.addElement("GUID").addText("newguid"); Element proir1 = task1.addElement("Proir").addText("0"); Element status1 = task1.addElement("Status").addText("a"); Element isSend1 = task1.addElement("IsSend").addText("true"); xml.CreatXML(doc1); } catch(Exception ex) {} } |
6、附:测试的两个文件,dom4jmain.java和dom4jtest.java
dom4jmain.java 文件。
import org.dom4j.*; import org.dom4j.io.OutputFormat; import org.dom4j.io.XMLWriter; import org.dom4j.io.SAXReader; import java.io.*; import java.net.*;
public class dom4jmain { public dom4jmain() { }
public Document createDocument() { Document document = DocumentHelper.createDocument(); document.addComment("索引文件管理列表!"); Element root = document.addElement( "Root" );
Element sysDir1 = root.addComment("存储文件工作目录") .addElement( "SysDir" ).addText("C:\\document\\aa\\"); for(int i = 0;i<5;i++) { String guid = "***"+i; Element task1 = root.addElement( "Task" ); Element guid1 = task1.addElement("GUID").addText(guid); Element proir1 = task1.addElement("Proir").addText((i+2)+""); Element status1 = task1.addElement("Status").addText((i+5)+""); Element isSend1 = task1.addElement("IsSend").addText("true"); } return document; } public boolean CreatXML(Document doc) { boolean ret = false; try { //输出数据到XML文件中 OutputFormat format = OutputFormat.createPrettyPrint(); //xml文件字符集为GBK format.setEncoding("GBK"); FileOutputStream fos = new FileOutputStream("d:\\content.xml"); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(fos , "GBK")); XMLWriter writer = new XMLWriter(bw , format); writer.write(doc); bw.close(); ret = true; }catch(Exception ex) { System.out.println(ex.toString()); } return ret; } public Document read(String fileName) throws MalformedURLException, DocumentException { SAXReader reader = new SAXReader(); Document document = reader.read(new File(fileName)); return document; } public Element getRootElement(Document doc) { return doc.getRootElement(); } }
|
dom4jtest.java 文件。
import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.Node;
public class dom4jtest { public static void main(String s[]) { dom4jmain xml=new dom4jmain(); Document doc = xml.createDocument(); xml.CreatXML(doc); try { Document doc1 = xml.read("D:\\content.xml"); Element root = xml.getRootElement(doc1); boolean isDel = false; for(int i =0; i < root.nodeCount(); i ++) { Node node = root.node(i); String nodexml = node.asXML(); if(nodexml.trim().equals("")) continue; if (node instanceof Element) { if(node.getName().equals("Task")) { System.out.println("///////////////////////"); System.out.println(node.asXML()); Element enode = (Element)node; String guid = ""; for(int j =0; j < enode.nodeCount(); j ++) { Node chnode = enode.node(j); nodexml = chnode.asXML(); if(nodexml.trim().equals("")) continue; //获取GUID if(chnode.getName().equals("GUID")) { guid = chnode.getText(); } //修改属性 if(guid.equals("***1") && chnode.getName().equals("IsSend")) { chnode.setText("false"); } //删除节点设置 if(guid.equals("***2")) { isDel = true; } System.out.println("<Task>"+chnode.getName()+"="+chnode.getText()); } } else if(node.getName().equals("SysDir")) { System.out.println("<SysDir>"+node.getName()+"="+node.getText()); } } //删除节点 if(isDel) { root.remove(node); isDel = false; } } //增加节点 Element task1 = root.addElement( "Task" ); Element guid1 = task1.addElement("GUID").addText("newguid"); Element proir1 = task1.addElement("Proir").addText("0"); Element status1 = task1.addElement("Status").addText("a"); Element isSend1 = task1.addElement("IsSend").addText("true"); xml.CreatXML(doc1); } catch(Exception ex) {} } }
|
7、测试结果
打印出下面的输出结果,同时会在D:\下创建一个content.xml的文件。
<SysDir>SysDir=C:\document\aa\ /////////////////////// <Task> <GUID>***0</GUID> <Proir>2</Proir> <Status>5</Status> <IsSend>true</IsSend> </Task> <Task>GUID=***0 <Task>Proir=2 <Task>Status=5 <Task>IsSend=true /////////////////////// <Task> <GUID>***1</GUID> <Proir>3</Proir> <Status>6</Status> <IsSend>true</IsSend> </Task> <Task>GUID=***1 <Task>Proir=3 <Task>Status=6 <Task>IsSend=false /////////////////////// <Task> <GUID>***2</GUID> <Proir>4</Proir> <Status>7</Status> <IsSend>true</IsSend> </Task> <Task>GUID=***2 <Task>Proir=4 <Task>Status=7 <Task>IsSend=true /////////////////////// <Task> <GUID>***3</GUID> <Proir>5</Proir> <Status>8</Status> <IsSend>true</IsSend> </Task> <Task>GUID=***3 <Task>Proir=5 <Task>Status=8 <Task>IsSend=true /////////////////////// <Task> <GUID>***4</GUID> <Proir>6</Proir> <Status>9</Status> <IsSend>true</IsSend> </Task> <Task>GUID=***4 <Task>Proir=6 <Task>Status=9 <Task>IsSend=true
|
没有评论:
发表评论