package org.dm.swingTest;
//先加入dom4j.jar包
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
/**
* @Title: TestDom4j.java
* @Package
* @Description: 解析xml字符串
* @author 无处不在
* @date 2012-11-20 下午05:14:05
* @version V1.0
*/
public class TestDom4j {
public static 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字符串的
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 Map readStringXmlOut(String xml) {
Map map = new HashMap();
Document doc = null;
try {
// 将字符串转为XML
doc = DocumentHelper.parseText(xml);
// 获取根节点
Element rootElt = doc.getRootElement();
// 拿到根节点的名称
System.out.println("根节点:" + rootElt.getName());
// 获取根节点下的子节点head
Iterator iter = rootElt.elementIterator("head");
// 遍历head节点
while (iter.hasNext()) {
Element recordEle = (Element) iter.next();
// 拿到head节点下的子节点title值
String title = recordEle.elementTextTrim("title");
System.out.println("title:" + title);
map.put("title", title);
// 获取子节点head下的子节点script
Iterator iters = recordEle.elementIterator("script");
// 遍历Header节点下的Response节点
while (iters.hasNext()) {
Element itemEle = (Element) iters.next();
// 拿到head下的子节点script下的字节点username的值
String username = itemEle.elementTextTrim("username");
String password = itemEle.elementTextTrim("password");
System.out.println("username:" + username);
System.out.println("password:" + password);
map.put("username", username);
map.put("password", password);
}
}
//获取根节点下的子节点body
Iterator iterss = rootElt.elementIterator("body");
// 遍历body节点
while (iterss.hasNext()) {
Element recordEless = (Element) iterss.next();
// 拿到body节点下的子节点result值
String result = recordEless.elementTextTrim("result");
System.out.println("result:" + result);
// 获取子节点body下的子节点form
Iterator itersElIterator = recordEless.elementIterator("form");
// 遍历Header节点下的Response节点
while (itersElIterator.hasNext()) {
Element itemEle = (Element) itersElIterator.next();
// 拿到body下的子节点form下的字节点banlce的值
String banlce = itemEle.elementTextTrim("banlce");
String subID = itemEle.elementTextTrim("subID");
System.out.println("banlce:" + banlce);
System.out.println("subID:" + subID);
map.put("result", result);
map.put("banlce", banlce);
map.put("subID", subID);
}
}
} catch (DocumentException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return map;
}
public static void main(String[] args) {
// 下面是需要解析的xml字符串例子
String xmlString = "<html>" + "<head>" + "<title>dom4j解析一个例子</title>"
+ "<script>" + "<username>yangrong</username>"
+ "<password>123456</password>" + "</script>" + "</head>"
+ "<body>" + "<result>0</result>" + "<form>"
+ "<banlce>1000</banlce>" + "<subID>36242519880716</subID>"
+ "</form>" + "</body>" + "</html>";
/*
* Test2 test = new Test2(); test.readStringXml(xmlString);
*/
readStringXml(xmlString);
Map map = readStringXmlOut(xmlString);
Iterator iters = map.keySet().iterator();
while (iters.hasNext()) {
String key = iters.next().toString(); // 拿到键
String val = map.get(key).toString(); // 拿到值
System.out.println(key + "=" + val);
}
}
}
相关推荐
2. **dom4j-1.6.1.jar**:这是一个Java XML处理库,它在POI中用于解析和生成XML文档。在处理Excel时,尤其是xlsx格式,DOM4J可以帮助解析和构建XML结构,因为.xlsx文件本质上是基于ZIP压缩的XML文件集合。 3. **...
5. 序列化:将修改后的`Document`对象转换回XML字符串,或者写入到文件。 三、DOM4J解析源码分析 在提供的源码中,我们可以看到如何使用DOM4J来解析XML文件。例如,以下代码展示了如何读取XML文件并打印根元素: `...
例如,你可以直接使用`XStream.fromXML(String xml)`方法将XML字符串转化为Java对象,反之亦然。 2. **dom4j.jar**: DOM4J是一个非常灵活的用于处理XML的Java库,它是基于DOM(Document Object Model)模型的,但...
本篇将详细介绍使用DOM4j.Jar和JDOM.jar这两个Java库来解析XML文件的方法。 **DOM4j** DOM4j是一个灵活且功能强大的Java XML API,它提供了全面的XML处理解决方案,包括读取、写入、操作和转换XML文档。DOM4j的...
在这个例子中,我们首先使用`DocumentHelper.parseText()`解析XML字符串,然后通过`getRootElement()`获取根元素,接着访问元素和属性,最后修改元素内容并输出。 而`book.xml`可能是一个用于测试的XML文件,内容...
3. 序列化:dom4j可以将XML文档对象序列化为字符串或写入文件,也可以将Java对象转换为XML格式。 二、ojdbc14_g.jar:Oracle数据库连接桥梁 ojdbc14_g.jar是Oracle公司提供的JDBC驱动程序,用于Java应用程序与...
9. **转换功能**:DOM4J能够将XML文档转换成其他格式,如HTML或Text,也可以将对象模型转换回XML字符串。 10. **IO操作**:DOM4J提供了一套简单的API来读写XML文件,支持流式处理,可以高效地处理大文件。 总结来...
### 一、DOM4J解析XML 1. **文档对象模型(Document Object Model)**: DOM4J通过Document类代表整个XML文档,它可以被视为XML文档的根节点。你可以通过`DocumentBuilderFactory`和`DocumentBuilder`来构建一个`...
2. 加载XML文档:使用Dom4j的`DocumentHelper.parseText()`或`SAXReader.read()`方法加载XML字符串或文件。 3. 查询XML:创建一个`XPathExpression`对象,使用`XPathFactory`和`XPath`接口,然后调用`evaluate()`...
### DOM4J解析XML DOM4J是一种Java语言下的轻量级XML处理库,它可以方便地解析、修改和创建XML文档。与DOM、SAX等其他XML解析技术相比,DOM4J提供了更丰富的功能和更好的性能表现。本文将详细介绍如何使用DOM4J解析...
`dom4j-1.6.1.jar`是DOM4J的一个版本,包含所有必要的类和方法来处理XML任务。 3. XStream: XStream是另一个强大的Java库,用于XML序列化和反序列化。它可以将Java对象直接转换为XML,反之亦然。这在需要将Java...
Java解析XML时,dom4j是一个非常流行的库,它提供了灵活且强大的API来处理XML文档。dom4j-1.6.1.jar是这个库的一个版本,发布于2005年,它支持XML的读取、写入、操作以及查询功能。在本文中,我们将深入探讨dom4j的...
- **XML序列化**:可以将XML对象转换回XML字符串或写入文件,实现XML数据的保存和传输。 - **事件处理**:支持XML事件驱动的处理,如监听XML解析过程中的事件。 - **Namespace支持**:DOM4J对XML命名空间有良好的...
- 反序列化则可以将XML字符串转换回`Document`对象,使用`DocumentHelper.parseText()`即可完成。 6. **与Java集合框架的集成** - Dom4j的许多类都实现了Java集合接口,如`List`和`Map`,这使得我们可以方便地...
2. **dom4j.jar**:这是一个强大的XML处理库,它支持DOM、SAX和StAX解析方式,并提供了一种简单易用的API来操作XML文档。通过dom4j,开发者可以方便地创建、修改、查询XML文档,对XML数据进行处理和分析。 3. **...
// 输出XML字符串 System.out.println(document.asXML()); } } ``` 以上代码创建了一个简单的XML文档,包含一个"Employees"根元素和一个"Employee"子元素,每个子元素都有"Name"和"Position"属性。这就是DOM4J的...
DOM4J 1.6.1.jar 和 dom4j.api 是两个与XML处理密切相关的库,主要用于解析、操作和生成XML文档。在这个压缩包中,我们有两个关键组件: 1. **DOM4J 1.6.1.jar**: DOM4J 是一个流行的Java库,它提供了对XML文档的...
对于XML的处理,有两个重要的Java库:dom4j-1.6.1.jar和jaxen-1.1-beta-6.jar。这两个库在XML解析和操作中扮演着关键角色。 **dom4j-1.6.1.jar** dom4j是一个灵活且功能强大的Java库,专门用于处理XML文档。它提供...
为了在Java项目中使用DOM4J解析XML,你需要将这两个jar文件(dom4j-1.6.1和jaxen-1.1-beta-7.jar)添加到你的类路径(classpath)中。这可以通过在IDE中配置构建路径,或者在命令行中指定 `-cp` 参数来完成。一旦...