使用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

原文地址:https://www.cnblogs.com/java20130726/p/3218382.html