使用dom4j 解析xml

来源:互联网 发布:成绩录入系统 源码 编辑:程序博客网 时间:2024/06/05 09:03

首先:需要把dom4j-*.jar 加载到class path 下..

 需要导入dom4j 下的类

 

 需要解析的xml 文件格式如下:

 

dom4j 解析xml 文件的java 代码

 

/** 解析响应内容 */@SuppressWarnings("unchecked")public PosSign domXmlResponse(String xmlContent) {PosSign pos = new PosSign();try {Document document = DocumentHelper.parseText(xmlContent);document.setXMLEncoding("GBK");Element elements = document.getRootElement();for (Iterator i = elements.elementIterator(); i.hasNext();) {Element element = (Element) i.next(); // dom 第一层元素if (element.getName().equals("PUB")) {for (Iterator j = element.elementIterator(); j.hasNext();) { // 遍历<PUB>下的节点Element node = (Element) j.next(); // 获得<PUB>元素每一个节点if ("TRXTIME".equals(node.getName())) { // 输出PUBpos.setTrxTime(node.getText());} else if ("TRXDATE".equals(node.getName())) {pos.setTrxDate(node.getText());}}} else if ("OUT".equals(element.getName())) {for (Iterator j = element.elementIterator(); j.hasNext();) { // 遍历<OUT>下的节点Element nodeOut = (Element) j.next();// dom 第二层元素  OUT的子元素 获得<OUT>元素每一个节点if ("TRXCODE".equals(nodeOut.getName())) { // 输出OUTpos.setTrxCode(nodeOut.getText());} else if ("RETCODE".equals(nodeOut.getName())) {pos.setRetCode(nodeOut.getText());} else if ("RETMSG".equals(nodeOut.getName())) {pos.setRetMsg(nodeOut.getText());} else if ("POSID".equals(nodeOut.getName())) {pos.setPosId(nodeOut.getText());} else if ("MERID".equals(nodeOut.getName())) {pos.setMerId(nodeOut.getText());} else if ("PINKEY".equals(nodeOut.getName())) {pos.setPin_KEY(nodeOut.getText());} else if ("TKEY".equals(nodeOut.getName())) {pos.setT_KEY(nodeOut.getText());}}}}} catch (Exception e) {System.out.println(e);}return pos;}

注:当使用dom4j 时,使用 DocumentHelper.parseText(xmlContent); 时如果xmlContent有空格会报异常。Content is not allowed in trailing section

是什么意思呢。就是dom4j解析的内容有宁空格出现,需要把空格去掉。 DocumentHelper.parseText(xmlContent.trim());

 

 解析结果:

 

创建一个xml 文件代码如下:

 

 public  static void  createXml(String fileName) {  Document document = DocumentHelper.createDocument();  Element employees=document.addElement("employees");   Element employee=employees.addElement("employee");    Element name= employee.addElement("name");         name.setText("ddvip");          Element sex=employee.addElement("sex");      sex.setText("m");     Element age=employee.addElement("age");    age.setText("29");        try {          Writer fileWriter=new FileWriter(fileName);    XMLWriter xmlWriter=new XMLWriter(fileWriter);    xmlWriter.write(document);           xmlWriter.close();         } catch (IOException e) {     System.out.println(e.getMessage());    }                       }


 

 生成的xml 文件如下:

 

 

在做dom4j 解析时,也可以解析文本内容 。

         Document document = DocumentHelper.parseText(xmlContent);
         document.setXMLEncoding("GBK");

         fileName 是文件的全限定名
         SAXReader saxReader = new SAXReader();  
         Document document = saxReader.read(new File(fileName)); 

注:PosSign 是一个javaBean 属性是xml 中的每一个元素 ..

这个查看XML 的工具叫 foxechs 下载地址:http://download.csdn.net/download/BOBO56SH/2026527