參考資料:http://blog.csdn.net/qking93415981/archive/2007/09/14/1785114.aspx
public class ReadXMLByDom {
public static void main(String [] args) throws DocumentException{
String str = "<diffgr><books><book
id='1'><Name>Java</Name><price>100</price></book>";
str = str + "<book
id='2'><Name>Linux</Name><price>100</price></book></books></diffgr>";
//獲取Document
Document document = DocumentHelper.parseText(str);
//查找需要遍歷的节点
List list = document.selectNodes("/diffgr/books/book
" );
//遍历节点
Iterator it = list.iterator();
while(it.hasNext())
{
Element ftpElement = (Element)it.next();
//取得該節點屬性值
System.out.println("id屬性:"+ftpElement.attributeValue(
"
id
"
);)
//取得需要的節點的值
System.out.println("name="+ftpElement.element("Name").getText());
System.out.println("price="+ftpElement.element("price").getText());
}
}
}
這樣,需要取什麽值,都可以指定。很方便。
這是dom4j最簡單的應用了
需要遍歷整個XML,可以參考如下
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import java.io.File;
import java.util.*;
public class TestSAX {
// private static Map<String, String> xmlmap = new HashMap<String,
// String>();
private static List<Leaf> elemList = new ArrayList<Leaf>();
private static String srcXml =
"<diffgr:diffgram
xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\"
xmlns:diffgr=\"urn:schemas-microsoft-com:xml-diffgram-v1\">" +
"<NewDataSet xmlns=\"\">" +
"<Table diffgr:id=\"Table1\" msdata:rowOrder=\"0\">" +
"<id>125704</id>" +
"<l_name>我暈</l_name>" +
"<m1_number>8613574286112</m1_number>" +
"<local_number>861052231235</local_number>" +
"<m2_name>海,小剛</m2_name>" +
"</Table>" +
"<Table diffgr:id=\"Table2\" msdata:rowOrder=\"1\">" +
"<id>124849</id><l_name>我暈</l_name>" +
"<m1_number>8613574286112</m1_number><local_number>" +
"862151923508</local_number>" +
"<m2_name>jerry217(Internet)</m2_name>" +
"</Table>" +
"<Table diffgr:id=\"Table6\" msdata:rowOrder=\"1\">" +
"<id>124849</id>" +
"<l_name>我暈</l_name>" +
"<m1_number>8613574286112</m1_number>" +
"<local_number>862151923508</local_number>" +
"<m2_name>jerry217(Internet)</m2_name><" +
"/Table>" +
"</NewDataSet>" +
"</diffgr:diffgram>";
public static void main(String args[]) throws DocumentException {
TestSAX test = new TestSAX();
Element root = test.getRootElement();
test.getElementList(root);
String x = test.getListString(elemList);
System.out.println("-----------原xml内容------------");
System.out.println(srcXml);
System.out.println("-----------解析结果------------");
System.out.println(x);
}
/**
* 获取根元素
*/
public Element getRootElement() throws DocumentException {
Document srcdoc = DocumentHelper.parseText(srcXml);
Element elem = srcdoc.getRootElement();
return elem;
}
/**
* 递归遍历方法
*/
public void getElementList(Element element) {
List elements = element.elements();
if (elements.size() == 0) {
// 没有子元素
System.out.println(element.getUniquePath()); //如果有相同屬性,會在屬性結尾加上“[數字]”進行標示
String xpath = element.getPath();
String value = element.getTextTrim();
elemList.add(new Leaf(xpath, value)); //Leaf 僅僅是
} else {
// 有子元素
for (Iterator it = elements.iterator(); it.hasNext();) {
Element elem = (Element) it.next();
// 递归遍历
getElementList(elem);
}
}
}
public String getListString(List<Leaf> elemList) {
StringBuffer sb = new StringBuffer();
for (Iterator<Leaf> it = elemList.iterator(); it.hasNext();) {
Leaf leaf = it.next();
sb.append(leaf.getXpath()).append(" = ").append(leaf.getValue())
.append("\n");
}
return sb.toString();
}
}
/**
* xml节点数据结构
*/
class Leaf {
private String xpath;
private String value;
public Leaf(String xpath, String value) {
this.xpath = xpath;
this.value = value;
}
public String getXpath() {
return xpath;
}
public void setXpath(String xpath) {
this.xpath = xpath;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
分享到:
相关推荐
DOM4J作为一个解析器,它的核心功能是将XML文档转换为一个可以被Java程序操作的对象树。 **XML读取** 1. **解析XML文件**:使用DOM4J的`DocumentHelper`类的`parseText()`或`parse()`方法,可以将XML文件加载为一...
标题"Dom4j_demo.rar_DEMO_dom4j de_dom4j demo_dom4j demo project_xml读"中包含了几个关键信息点:`Dom4j`、`demo`以及`xml读`。这表明这是一个关于使用Dom4j库进行XML读取操作的示例项目。`Dom4j`是Java中一个...
5. **命名空间处理**:对于包含命名空间的XML文档,DOM4J提供了便捷的方法来处理和操作这些命名空间。 6. **DOM4J与JAXB集成**:JAXB(Java Architecture for XML Binding)是Java提供的一个标准框架,用于在Java...
DOM4J是一个非常流行的Java XML API,它提供了丰富的功能,包括读取、写入、修改以及操作XML文档。在XML处理中,格式化是一个重要的环节,它可以使得XML代码更加整洁、易读,便于理解和维护。 【描述】虽然描述部分...
4. **文档建模**:除了基本的节点操作,DOM4J还提供了元素、属性、文本、注释、处理指令等高级功能,使得构建和操作XML文档更加便捷。 5. **事件驱动**:DOM4J支持SAX事件驱动的解析,可以在解析过程中实时处理XML...
DOM4J是Java中一个流行的XML处理库,它提供了灵活且功能强大的API来操作XML文档。本篇笔记将深入探讨XML DOM4J的学习要点。 一、XML基础知识 1. XML结构:XML文档由元素(Element)、属性(Attribute)、文本内容...
DOM4j作为一个开源的Java库,提供了强大的XML处理能力,能够帮助开发者快速解析和操作XML文档,极大地提高了开发效率。 #### DOM4j简介 DOM4j是基于Java的,一个灵活高效的XML处理库。它支持DOM、SAX和JDOM等API,...
DOM4J是一个强大的Java XML API,支持XML的读写、搜索、修改等功能,它通过SAXReader对象读取XML文档并将其转化为对象模型以便于操作。在处理大型XML文件时,也可以考虑使用SAX解析,尽管它需要额外的工作来管理事件...
这篇名为“dom4j 读xml灰藏有用的jar包”的博客文章可能详细介绍了如何利用DOM4J来读取和操作XML文件,而“student.xml”可能是博主用于示例的一个XML文件。 在处理XML时,DOM4J主要有以下几个关键知识点: 1. **...
使用DOM4J进行的一系列对XML文件的操作,包括读写,创建,同时注释出相关的常用的解析器,Document创建器
基于dom4j的读写xml文件的工具包。封装了dom4j操作xml文档的常和方法。 支持两种读写方法。1:针对小文件的读取整个文档,2:针对大文件的,逐行读取。读到几百M文件毫无压力。
DOM4j是一个灵活且功能强大的Java XML API,它提供了全面的XML处理解决方案,包括读取、写入、操作和转换XML文档。DOM4j的核心特性是基于DOM模型,但同时融入了SAX和DOM的优点,使其在处理大型XML文件时具有更好的...
`dom4j`是一个强大的Java XML API,它提供了一种灵活的方式来读取、写入、修改以及操作XML文档。在解析`struts.xml`时,dom4j能帮助我们高效地遍历XML节点,获取或设置属性值,以及创建对象模型来表示配置文件的结构...
DOM4J的源码清晰易读,对于学习XML处理的原理和最佳实践非常有价值。通过阅读和理解DOM4J的源码,开发者可以更好地掌握XML处理的细节。 总结,DOM4J是一个强大而灵活的XML处理库,无论是在小型项目还是大型企业...
操作方式包括:dom和dom4j dom是W3C规范,比较典型的JAVA操作XML方式,适用于小型文件。 dom4j是开源的性能以及效率最好的,也是一个典型例子。 本源码下下来运行test.java直接运行。 其中包括:采用dom写xml 以及...
DOM4J的API则更为强大,适合复杂的XML操作和集成。 - **性能**:两者性能相近,但在大型XML文档处理时,DOM4J的延迟加载策略可能更具优势。 - **功能**:DOM4J提供了XPath支持,而JDOM相对较弱,这使得DOM4J在查询和...
DOM4J的API更加面向对象,使得代码更易读、易写,而标准的Java DOM API则相对复杂,且内存消耗较大。 **使用DOM4J进行XML操作实例** 1. 解析XML文件: ```java SAXReader reader = new SAXReader(); Document ...
#### 四、使用 DOM4j 修改 XML 文件 DOM4j 支持对 XML 文件的修改,包括添加、删除或更新节点。例如,修改某个元素的值: ```java Element element = root.element("元素名称"); element.setText("新的文本内容");...
DOM4J提供了`Format`类用于格式化XML输出,使其更易读。创建一个`Format`对象并使用`outputString()`方法: ```java Format prettyFormat = Format.getPrettyFormat(); String formattedXML = doc.asXML...