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

  • 相关阅读:
    BEC listen and translation exercise 44
    中译英12
    BEC listen and translation exercise 43
    中译英11
    BEC listen and translation exercise 42
    中译英10
    BEC listen and translation exercise 41
    中译英9
    BEC listen and translation exercise 40
    中译英8
  • 原文地址:https://www.cnblogs.com/java20130726/p/3218382.html
Copyright © 2011-2022 走看看