根据这个XML文件来进行解析
<?xml version="1.0" encoding="UTF-8"?> <students> <student age="28"> <name>崔卫兵</name> <college>PC学院</college><!--如果没有leader属性,默认为leader --> <telephone>62354666</telephone> <notes>男,1985年生,硕士,现就读于北京邮电大学</notes> </student> <student><!--如果没有age属性,默认为20 --> <name>张洪泽</name> <college leader="leader">PC学院</college> <telephone>62358888</telephone> <notes>男,1987年生,硕士,现就读于中国农业大学</notes> </student> </students>
Dom4jExmple
package dom4j.demo; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.util.Iterator; import org.dom4j.Attribute; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.io.OutputFormat; import org.dom4j.io.SAXReader; import org.dom4j.io.XMLWriter; public class Dom4jExmple { public static void main(String[] args) { String filename = System.getProperty("user.dir") + "/newfile.xml"; Dom4jExmple dom4j = new Dom4jExmple(); dom4j.createNewDocument(filename); // 创建新XML文档 // dom4j.addNewElement(filename); // 添加新元素 // dom4j.modifyElement(filename); // 修改元素 // dom4j.deleteElement(filename); // 删除元素 } public void createNewDocument(String filename) { Document document = DocumentHelper.createDocument(); Element root = document.addElement("students"); // 创建根元素 Element student = root.addElement("student").addAttribute("age", "27"); student.addElement("name").addText("新人一枚"); student.addElement("college").addAttribute("leader", "leader") .addText("游戏学院"); student.addElement("telephone").addText("62355566"); student.addElement("notes").addText("男,1986年生,硕士,现就读于中国农业大学"); OutputFormat format = OutputFormat.createPrettyPrint(); XMLWriter writer; try { writer = new XMLWriter(new FileWriter(filename), format); writer.write(document); writer.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println("OK"); } public void addNewElement(String filename) { SAXReader saxReader = new SAXReader(); try { Document document = saxReader.read(new File(filename)); Element root = document.getRootElement(); Element student = root.addElement("student").addAttribute("age", "30"); student.addElement("name").addText("又来一个"); student.addElement("college").addAttribute("leader", "leader") .addText("游戏学院"); student.addElement("telephone").addText("62357788"); student.addElement("notes").addText("男,1983年生,博士,现就读于中国矿业大学"); OutputFormat format = OutputFormat.createPrettyPrint(); XMLWriter writer = new XMLWriter(new FileWriter(filename), format); writer.write(document); writer.close(); } catch (DocumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println("O.K."); } public void modifyElement(String filename) { SAXReader saxReader = new SAXReader(); try { Document document = saxReader.read(new File(filename)); Element root = document.getRootElement(); for (Iterator iter = root.elementIterator(); iter.hasNext();) { Element element = (Element) iter.next(); if (element.element("name").getText().equals("又来一个")) { element.element("telephone").setText("62350000"); break; } } OutputFormat format = OutputFormat.createPrettyPrint(); XMLWriter writer = new XMLWriter(new FileWriter(filename), format); writer.write(document); writer.close(); } catch (DocumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println("O.K."); } public void deleteElement(String filename) { SAXReader saxReader = new SAXReader(); try { Document document = saxReader.read(new File(filename)); Element root = document.getRootElement(); for (Iterator iter = root.elementIterator(); iter.hasNext();) { Element element = (Element) iter.next(); if (element.element("name").getText().equals("又来一个")) { root.remove(element); break; } } OutputFormat format = OutputFormat.createPrettyPrint(); XMLWriter writer = new XMLWriter(new FileWriter(filename), format); writer.write(document); writer.close(); } catch (DocumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println("O.K."); } }
Dom4jReadExmple
package dom4j.demo; import java.io.File; import java.util.HashMap; import java.util.Iterator; import org.dom4j.Attribute; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.io.SAXReader; public class Dom4jReadExmple { /** * 遍历整个XML文件,获取所有节点的值与其属性的值,并放入HashMap中 * * @param filename * String 待遍历的XML文件(相对路径或者绝对路径) * @param hm * HashMap 存放遍历结果 */ public void iterateWholeXML(String filename, HashMap<String, String> hm) { SAXReader saxReader = new SAXReader(); try { Document document = saxReader.read(new File(filename)); Element root = document.getRootElement(); int num = -1; // 用于记录学生编号的变量 // 遍历根元素(students)的所有子节点(肯定是student节点) for (Iterator iter = root.elementIterator(); iter.hasNext();) { Element element = (Element) iter.next(); num++; // 获取person节点的age属性的值 Attribute ageAttr = element.attribute("age"); if (ageAttr != null) { String age = ageAttr.getValue(); if (age != null && !age.equals("")) { hm.put(element.getName() + "-" + ageAttr.getName() + num, age); } else { hm.put(element.getName() + "-" + ageAttr.getName() + num, "20"); } } else { hm.put(element.getName() + "-age" + num, "20"); } // 遍历student节点的所有子节点(即name、college、telphone和notes), // 并处理 for (Iterator iterInner = element.elementIterator(); iterInner .hasNext();) { Element elementInner = (Element) iterInner.next(); if (elementInner.getName().equals("college")) { hm.put(elementInner.getName() + num, elementInner.getText()); // 获取college节点的leader属性的值 Attribute leaderAttr = elementInner.attribute("leader"); if (leaderAttr != null) { String leader = leaderAttr.getValue(); if (leader != null && !leader.equals("")) { hm.put(elementInner.getName() + "-" + leaderAttr.getName() + num, leader); } else { hm.put(elementInner.getName() + "-" + leaderAttr.getName() + num, "leader"); } } else { hm.put(elementInner.getName() + "-leader" + num, "leader"); } } else { hm.put(elementInner.getName() + num, elementInner.getText()); } } } } catch (DocumentException e) { e.printStackTrace(); } } }
TestDom4jReadExmple
package dom4j.demo; import java.util.HashMap; public class TestDom4jReadExmple { public static void main(String[] args) { try { // 获取解析完后的解析信息 HashMap<String, String> hashMap; Dom4jReadExmple drb = new Dom4jReadExmple(); // 遍历整个XML文件 hashMap = new HashMap<String, String>(); String n = System.getProperty("user.dir");// 获取当前工程真实路径 // studentInfo.xml保存学生信息,放在src目录下 drb.iterateWholeXML(n + "\\src\\studentInfo.xml", hashMap); for (int i = 0; i < hashMap.size(); i += 6) { int j = i / 6; System.out.print(hashMap.get("name" + j) + "\t"); System.out.print(hashMap.get("student-age" + j) + "\t"); System.out.print(hashMap.get("college" + j) + "\t"); System.out.print(hashMap.get("college-leader" + j) + "\t"); System.out.print(hashMap.get("telephone" + j) + "\t"); System.out.println(hashMap.get("notes" + j) + "\t"); } } catch (Exception ex) { ex.printStackTrace(); } } }
TestDom4jReadExmple 效果图
相关推荐
Dom4j解析struts2框架的struts.xml,自定义struts框架需要解析配置文件
struts.xml的错误解决办法,解决错误
前台页面展示用zTree插件,后台数据用XML保存,利用Dom4j进行解析,涉及到了对XML的增、删、改等等特别需求的技术,并用struts2+spring进行整合项目,源代码中有非常完整的注释,导入myEclipse部署运行,即可从...
第一个Struts2程序,处理一个form多个submit,struts.xml常用配置解析,使用validate方法验证数据,使用Validation框架验证数据,在Action类中获得HttpServletResponse对象的四种方法,上传任意多个文件,拦截器概述...
专为multipart请求信息使用的org.apache.struts2.dispatcher.multipart.MultiPartRequest解析器接口(文件上传用) struts.multipart.saveDir The directory to use for storing uploaded files 设置存储上传...
服务器端采用Struts2编码,Android客户端采用Json解析它的数据 服务器端程序为ServerProject(用MyEclipse建立此项目),Android客户端程序代码为:AndroidHttpJSONActivity 注意Android客户端代码中,有一个ip地址,...
使用STRUTS的解析XML技术digester来解析多层嵌套的XML文件,简单易懂
刚完成的 日本的项目 struts2 jdom解析 远端服务器 xml 文件 自定义struts2 标签分页 分页只需要向 其 传递2参数 页面上 自定义的标签 自动分页
用sevrlet模拟Struts2的简单功能。从拦截请求、解析自定义xml数据文件以及动态生成action的代理去执行目标方法,并实现了简单的日志拦截【interceptor】
前台页面展示用zTree插件,后台数据用XML保存,利用Dom4j进行解析,涉及到了对XML的增、删、改等等特别需求的技术,并用struts2+spring进行整合项目,源代码中有非常完整的注释,导入myeclipse部署运行,即可从...
11.4.7 编写Struts的配置文件struts-config.xml 11.4.8 编写Spring的配置文件spring-config.xml 11.4.9 配置web.xml 11.4.10 启动Tomcat运行示例 11.5 小结 第十二章 使用Hibernate快速实现持久层处理 12.1 ...
第一部分 Struts的优势 第二部分 Struts框架与MVC 第三部分 Struts工作流程 第四部分 Struts-config.xml的配置文件解析 第五部分 Struts中错误处理 第六部分 Struts实例操作
11.4.7 编写Struts的配置文件struts-config.xml 11.4.8 编写Spring的配置文件spring-config.xml 11.4.9 配置web.xml 11.4.10 启动Tomcat运行示例 11.5 小结 第十二章 使用Hibernate快速实现持久层处理 12.1 ...
11.4.7 编写Struts的配置文件struts-config.xml 11.4.8 编写Spring的配置文件spring-config.xml 11.4.9 配置web.xml 11.4.10 启动Tomcat运行示例 11.5 小结 第十二章 使用Hibernate快速实现持久层处理 12.1 ...
<br/>3、访问http://localhost:8080/PaginationStruts/即可 <br/>4、记得部署MySQL的JDBC驱动程序和Struts所需要的lib文件到%Tomcat%\webapps\PaginationStruts\WEB-INF\lib\目录下或者%Tomcat%\common\lib...
SSH(struts+spring+hibernate)的jar包 SSH 通常指的是 Struts2 做前端控制器,Spring ...配置文件加载顺序为:default.properties -> struts-default.xml -> struts-plugins.xml -> struts.xml -> struts.locale。
工具详尽:包括JDK、Tomcat、Eclipse、MySQL、Log4j、Ant、JUnit、CVS、解析XML文件等; 由浅入深:每章从简单示例入手,最后给出一个详细示例加深理解; 实战性强:书中提供了大量典型的应用案例,实战性很强; ...
第一部分 Struts的优势 第二部分 Struts框架与MVC 第三部分 Struts工作流程 第四部分 Struts-config.xml的配置文件解析 第五部分 Struts中错误处理 第六部分 Struts实例操作
代码一键自动生成工具 可生成Action、JavaBean实体类、Dao及实现类、service及实现类、spring.xml、struts.xml、mybatis.xml *该工具目前支持3种数据源的生成方式,分别是:JDBC、.table、PDM *JDBC:选择JDBC是只...