zoukankan      html  css  js  c++  java
  • 使用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

  • 相关阅读:
    【转载】C/C++中extern关键字详解
    【转载】extern "C"的用法解析(原博主就是抄百度百科的,不如另外一篇好)
    lua Date和Time
    MySQL-Linux安装
    Hive-0.13安装
    MR案例:单表关联查询
    MR案例:小文件处理方案
    MR案例:链式ChainMapper
    MR案例:定制Partitioner
    MR案例:多文件输出MultipleOutputs
  • 原文地址:https://www.cnblogs.com/java20130726/p/3218382.html
Copyright © 2011-2022 走看看