- 浏览: 21658 次
- 性别:
- 来自: 上海
最新评论
Dom4j是一个易用的、开源的库,用于XML,XPath和XSLT。它应用于Java平台,采用了Java集合框架并完全支持DOM,SAX和JAXP。
做为解析xml文件 比较好的方式,目前被广泛应用,不多说了,有个简单例子,供参考:
package com.dom.utils; import java.io.File; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.io.SAXReader; /** * * @description 解析xml字符串 * * @author liguohu09@gmail.com * * @Date 2012-02-09 */ public class Test { public void readStringXml(String xml) { Document doc = null; try { // 读取并解析XML文档 // SAXReader就是一个管道,用一个流的方式,把xml文件读出来 // // SAXReader reader = new SAXReader(); // User.hbm.xml表示你要解析的xml文档 // // Document document = reader.read(new File("User.hbm.xml")); // 下面的是通过解析xml字符串的 Document document = reader.read(new File("error all.xml")); // 下面的是通过解析xml字符串的 doc = DocumentHelper.parseText(xml); // 将字符串转为XML Element rootElt = doc.getRootElement(); // 获取根节点 System.out.println("根节点:" + rootElt.getName()); // 拿到根节点的名称 Iterator iter = rootElt.elementIterator("head"); // 获取根节点下的子节点head // 遍历head节点 while (iter.hasNext()) { Element recordEle = (Element) iter.next(); String title = recordEle.elementTextTrim("title"); // 拿到head节点下的子节点title值 System.out.println("title:" + title); Iterator iters = recordEle.elementIterator("script"); // 获取子节点head下的子节点script // 遍历Header节点下的Response节点 while (iters.hasNext()) { Element itemEle = (Element) iters.next(); String username = itemEle.elementTextTrim("username"); // 拿到head下的子节点script下的字节点username的值 String password = itemEle.elementTextTrim("password"); System.out.println("username:" + username); System.out.println("password:" + password); } } Iterator iterss = rootElt.elementIterator("body"); // /获取根节点下的子节点body // // 遍历body节点 while (iterss.hasNext()) { Element recordEless = (Element) iterss.next(); String result = recordEless.elementTextTrim("result"); // 拿到body节点下的子节点result值 System.out.println("result:" + result); Iterator itersElIterator = recordEless.elementIterator("form"); // 获取子节点body下的子节点form // 遍历Header节点下的Response节点 while (itersElIterator.hasNext()) { Element itemEle = (Element) itersElIterator.next(); String banlce = itemEle.elementTextTrim("banlce"); // 拿到body下的子节点form下的字节点banlce的值 String subID = itemEle.elementTextTrim("subID"); System.out.println("banlce:" + banlce); System.out.println("subID:" + subID); } } } catch (DocumentException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } /** * * @description 将xml字符串转换成map * @param xml * @return Map */ public static List readStringXmlOut(String xml) { // Map map = new HashMap(); List errorAll = null; Document doc = null; try { doc = DocumentHelper.parseText(xml); // 将字符串转为XML Element rootElt = doc.getRootElement(); // 获取根节点 System.out.println("根节点:" + rootElt.getName()); // 拿到根节点的名称 Iterator iter = rootElt.elementIterator("UniverseInterfaceResult"); // 获取根节点下的子节点UniverseInterfaceResult // // 遍历string节点 while (iter.hasNext()) { Element recordEle = (Element) iter.next(); String message = recordEle.elementTextTrim("Message"); // 拿到UniverseInterfaceResult节点下的子节点Message值 System.out.println("message:" + message); //返回值是success,则不做处理;否则,取所有报错订单信息. if("Failed".equals(message)){ //初始化list. errorAll = new ArrayList(); Element detailsEle = recordEle.element("Details");// 拿到UniverseInterfaceResult节点下的子节点Details值 Iterator iters = detailsEle.elementIterator("ErrorDetail"); // 遍历ErrorDetail节点下的Response节点. while (iters.hasNext()) { Element itemEle = (Element) iters.next(); System.out.println("ID:" + itemEle.elementText("Id")); System.out.println("Detail:" + itemEle.elementText("Detail")); Map errorMsg = new HashMap(); errorMsg.put("Id", itemEle.elementText("Id")); // 拿到每个Details下的子节点ErrorDetail下的字节点Id的值 errorMsg.put("Detail", itemEle.elementText("Detail")); errorAll.add(errorMsg); } } } } catch (DocumentException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } return errorAll; } public static void main(String[] args) { // 下面是需要解析的xml字符串例子 /** String xmlString = "<string xmlns='http://SGMPortal.Universe.QIP/'>" +"<universeinterfaceresult xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>" +"<details></details>" +"<message>Success</message>" +"<totallyfailed>false</totallyfailed>" +"</universeinterfaceresult>" + "</string>"; */ String xmlString = "" +"<string xmlns='http://SGMPortal.Universe.QIP/'>" +"<universeinterfaceresult xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>" +"<details>" +"<errordetail>" +"<id>13A3669B705C2F614825797C0043790F</id>" +"<detailmessage>Error occurred while parsing audit log with Id 13A3669B705C2F614825797C0043790F</detailmessage>" +"<detail>System.FormatException: The string was not recognized as a valid DateTime. There is an unknown word starting at index 20." +"at System.DateTime.Parse(String s)" +"</detail>" +"</errordetail>" +"<errordetail>" +"<id>14F86BD2E7C9C2DE4825797C0043784D</id>" +"<detailmessage>Error occurred while parsing audit log with Id 14F86BD2E7C9C2DE4825797C0043784D</detailmessage>" +"<detail>System.FormatException: The string was not recognized as a valid DateTime. There is an unknown word starting at index 20." +"at System.DateTime.Parse(String s)" +"</errordetail>" +"<errordetail>" +"<id>FAAB4D7FD87B79DB4825797C0042849D</id>" +"<detailmessage>Error occurred while parsing audit log with Id FAAB4D7FD87B79DB4825797C0042849D</detailmessage>" +"<detail>System.FormatException: The string was not recognized as a valid DateTime. There is an unknown word starting at index 20." +"at System.DateTime.Parse(String s)" +"</errordetail>" +"<errordetail>" +"<id>FA24B28DF49BF4634825797C00428263</id>" +"<detailmessage>Error occurred while parsing audit log with Id FA24B28DF49BF4634825797C00428263</detailmessage>" +"<detail>System.FormatException: The string was not recognized as a valid DateTime. There is an unknown word starting at index 20." +"at System.DateTime.Parse(String s)" +"</errordetail>" +"<errordetail>" +"<id>9AE5D97B5FE83D504825797C003BB513</id>" +"<detailmessage>Error occurred while parsing audit log with Id 9AE5D97B5FE83D504825797C003BB513</detailmessage>" +"<detail>System.FormatException: The string was not recognized as a valid DateTime. There is an unknown word starting at index 20." +"at System.DateTime.Parse(String s)" +"</errordetail>" +"<errordetail>" +"<id>75D9D702B5D054714825797C003BB258</id>" +"<detailmessage>Error occurred while parsing audit log with Id 75D9D702B5D054714825797C003BB258</detailmessage>" +"<detail>System.FormatException: The string was not recognized as a valid DateTime. There is an unknown word starting at index 20." +"at System.DateTime.Parse(String s)" +"</errordetail>" +"<errordetail>" +"<id>DAFEAA6924BAD8CB4825797C003BA735</id>" +"<detailmessage>Error occurred while parsing audit log with Id DAFEAA6924BAD8CB4825797C003BA735</detailmessage>" +"<detail>System.FormatException: The string was not recognized as a valid DateTime. There is an unknown word starting at index 20." +"at System.DateTime.Parse(String s)" +"</errordetail>" +"<errordetail>" +"<id>6723D7ACD159BBB04825797C003BA5D1</id>" +"<detailmessage>Error occurred while parsing audit log with Id 6723D7ACD159BBB04825797C003BA5D1</detailmessage>" +"<detail>System.FormatException: The string was not recognized as a valid DateTime. There is an unknown word starting at index 20." +"at System.DateTime.Parse(String s)" +"</errordetail>" +"<errordetail>" +"<id>C8932D9CECFA999C4825797C003BA01D</id>" +"<detailmessage>Error occurred while parsing audit log with Id C8932D9CECFA999C4825797C003BA01D</detailmessage>" +"<detail>System.FormatException: The string was not recognized as a valid DateTime. There is an unknown word starting at index 20." +"at System.DateTime.Parse(String s)" +"</errordetail>" +"<errordetail>" +"<id>21289941B1E8D07B4825797C003B9AF1</id>" +"<detailmessage>Error occurred while parsing audit log with Id 21289941B1E8D07B4825797C003B9AF1</detailmessage>" +"<detail>System.FormatException: The string was not recognized as a valid DateTime. There is an unknown word starting at index 20." +"at System.DateTime.Parse(String s)" +"</errordetail>" +"</details>" +"<message>Failed</message>" +"<totallyfailed>true</totallyfailed>" +"</universeinterfaceresult>" +"</string>"; /* * Test2 test = new Test2(); test.readStringXml(xmlString); */ List errorAll = readStringXmlOut(xmlString); Iterator iters = errorAll.iterator(); while (iters.hasNext()) { Map errorObj = (Map) iters.next(); System.out.println("Id{}=" + errorObj.get("Id")); System.out.println("Detail{}=" + errorObj.get("Detail")); } } }
Author: liguohu09@gmail.com
Date: 2012-02-09
相关推荐
**DOM4J解析XML实例详解** 在Java编程中,处理XML文档是一项常见的任务。DOM4J是一个非常流行的、强大的Java XML API,它提供了灵活且高效的方式来解析、创建、修改XML文档。本文将深入探讨如何使用DOM4J进行XML...
dom4j解析xml字符串实例
在这个实例中,我们将深入探讨如何使用DOM4J解析XML文件,并通过`Dom4jTest1.java`这个示例程序来理解其工作原理。 首先,我们需要了解XML(Extensible Markup Language)是一种标记语言,常用于存储和传输数据。...
在提供的文件列表中,`Test.java`可能包含使用DOM4J解析XML的示例代码。通常,这样的代码会包含以下部分: ```java import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; // ...
【使用dom4j解析XML】 dom4j是一个强大的开源XML框架,它提供了处理XML文档的各种功能,包括解析、创建、修改等。相比W3C DOM API,dom4j的优势在于其内置的XPath支持,允许更方便地定位和操作XML文档中的节点。 *...
使用DOM解析XML的基本步骤如下: 1. 创建DocumentBuilderFactory实例。 2. 使用DocumentBuilderFactory创建DocumentBuilder实例。 3. 使用DocumentBuilder的parse()方法解析XML文件,得到Document对象。 4. 通过...
接下来,我们将创建一个`SAXReader`实例,它是DOM4J中的解析器,用于读取XML文件: ```java SAXReader reader = new SAXReader(); ``` 然后,使用`reader`读取XML文件并获取`Document`对象,`Document`代表整个XML...
### 什么是XML文件 XML(Extensible Markup Language,可扩展标记语言)是一种标记语言,用于存储和传输数据。...掌握DOM4J解析XML的技术对于处理XML数据流以及Java应用程序中的数据交换具有重要意义。
DOM4J作为解析XML的库,遵循DOM(Document Object Model)模型,通过构建一棵节点树来表示XML文档的结构。 在`ParseMQ.java`文件中,通常会包含以下步骤: 1. 引入DOM4J库:导入必要的DOM4J库,如`org.dom4j....
在本实例中,我们将深入探讨如何使用DOM4J解析XML,并利用这些数据连接Oracle数据库进行数据操作。 首先,让我们了解DOM4J的基本用法。DOM4J的主要类包括`Document`、`Element`、`Attribute`和`Namespace`。`...
在“jar包执行20190331.rar”文件中,可能包含了一个Java项目,该项目使用DOM4J库解析XML文件并执行相关业务逻辑。执行此类项目通常涉及以下步骤: 1. 将jar包解压,找到主类(包含main方法)。 2. 使用Java命令行...
本篇文章将深入探讨如何使用DOM4J来解析XML文件,以及通过示例代码来展示其基本操作。 首先,我们需要理解DOM4J的工作原理。DOM4J采用的是DOM(Document Object Model)模型,它将整个XML文档加载到内存中形成一棵...
### DOM4J解析XML知识点详解 #### 一、DOM4J简介 DOM4J(Document Object Model for XML)是一款用于处理XML文档的轻量级Java库。它提供了一种非常简单且灵活的方式来创建、读取、修改和删除XML文档。DOM4J的主要...
本文将深入探讨如何使用Dom4j解析XML以及解决中文乱码的问题。 首先,让我们了解Dom4j的基本用法。在解析XML文件时,通常会使用`DocumentBuilderFactory`和`DocumentBuilder`来创建一个`Document`对象,然后通过这...
为了解决这个问题,可以通过自定义`EntityResolver`来提供一种机制,使得DOM4J即使在网络不可用的情况下也能正确解析XML文档。下面是一个具体的解决方案示例: #### 实现步骤 1. **创建自定义的EntityResolver类**...
在压缩包文件"复件 dom"中,可能包含了示例代码或教程,用于演示如何使用DOM4J和本地DOM解析XML文件。通过查看这些文件,你可以更深入地了解两种方法的具体实现,并在实际项目中选择合适的方式处理XML数据。 总结来...
在Java环境中,解析XML文档通常需要引入特定的库,DOM4J就是其中之一。下面我们将深入探讨DOM4J解析XML的基本概念、使用方法以及它与其他XML解析器的比较。 XML(eXtensible Markup Language)是一种标记语言,广泛...
要使用DOM4J读取XML文档,首先需要创建一个`SAXReader`对象,然后调用`read`方法传入XML文件路径。这将返回一个`Document`对象,我们可以从中获取所有元素信息。 ```java File file = new File("path_to_xml_file")...
在TestDom4j项目中,可能包含一个简单的Java程序,演示了如何使用Dom4j解析XML文件、查找特定元素、修改元素内容,并将结果写回XML。这个例子对于初学者来说非常有帮助,因为它展示了Dom4j在实际应用中的基本用法。...