使用dom4j 解析xml
首先:需要把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())) { // 输出PUB pos.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())) { // 输出OUT pos.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