记录一下使用dom4j和jdom这两个API处理字符串型XML的方法,虽然网上也有很多这样的文章,但我还是想再写一遍,方便自己查找。
dom4j是1.6.1版本,jdom是1.1版,代码没什么技术含量,就是API的使用而已,所以没加注释。
import java.io.IOException;
import java.io.StringWriter;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
public class Dom4JHandle {
private static final String xmlString = "<books><book price=\"108\"><name>Java编程思想</name><author>Bruce Eckel</author></book><book price=\"52\"><name>Effective Java</name><author>Joshua Bloch</author></book><book price=\"118\"><name>Java 7入门经典</name><author>Ivor Horton</author></book></books>";
public static void main(String[] args) {
parseXml(xmlString);
assembleXml();
}
public static void parseXml(String xmlString) {
try {
Document doc = DocumentHelper.parseText(xmlString);
Element root = doc.getRootElement();
@SuppressWarnings("unchecked")
List<Element> elements = root.elements();
for(Element element : elements) {
System.out.println("name=" + element.elementText("name") + "\tauthor=" + element.elementText("author")
+ "\tprice=" + element.attributeValue("price"));
}
} catch (DocumentException e) {
e.printStackTrace();
}
}
public static String assembleXml() {
Document doc = DocumentHelper.createDocument();
Element root = doc.addElement("books");
Element book = root.addElement("book");
book.addAttribute("price", "108");
book.addElement("name").setText("Java编程思想");
book.addElement("author").setText("Bruce Eckel");
book = root.addElement("book");
book.addAttribute("price", "52");
book.addElement("name").setText("Effective Java");
book.addElement("author").setText("Joshua Bloch");
book = root.addElement("book");
book.addAttribute("price", "118");
book.addElement("name").setText("Java 7入门经典");
book.addElement("author").setText("Ivor Horton");
OutputFormat format = OutputFormat.createCompactFormat(); //createPrettyPrint() 层次格式化
StringWriter writer = new StringWriter();
XMLWriter output = new XMLWriter(writer, format);
try {
output.write(doc);
writer.close();
output.close();
System.out.println(writer.toString());
} catch (IOException e) {
e.printStackTrace();
return null;
}
return writer.toString();
}
}
dom4j还可以配合xpath一起使用,一般来说用不上,不过xml比较复杂,而需求又比较特殊的时候就需要它来配合了,不过不用完全记住那些规则,可以去w3cschool网站在线查询:
http://www.w3school.com.cn/xpath/index.asp
import java.io.StringReader;
import java.util.List;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;
import org.jdom.output.Format;
import org.jdom.output.XMLOutputter;
public class JdomHandle {
private static final String xmlString = "<books><book price=\"108\"><name>Java编程思想</name><author>Bruce Eckel</author></book><book price=\"52\"><name>Effective Java</name><author>Joshua Bloch</author></book><book price=\"118\"><name>Java 7入门经典</name><author>Ivor Horton</author></book></books>";
public static void main(String[] args) {
parseXml(xmlString);
assembleXml();
}
public static void parseXml(String xmlString) {
SAXBuilder builder = new SAXBuilder();
Document doc = null;
try {
doc = builder.build(new StringReader(xmlString));
Element root = doc.getRootElement(); // 根元素
@SuppressWarnings("unchecked")
List<Element> list = root.getChildren();
if (list != null) {
for (Element element : list) {
System.out.println("name=" + element.getChildText("name") + "\tauthor="
+ element.getChildText("author") + "\tprice=" + element.getAttributeValue("price"));
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static String assembleXml() {
Document doc = new Document();
Element root = new Element("books");
Element book = new Element("book");
Element name = new Element("name");
Element author = new Element("author");
book.setAttribute("price", "108");
name.addContent("Java编程思想");
author.addContent("Bruce Eckel");
book.addContent(name);
book.addContent(author);
root.addContent(book);
book = new Element("book");
name = new Element("name");
author = new Element("author");
book.setAttribute("price", "52");
name.addContent("Effective Java");
author.addContent("Joshua Bloch");
book.addContent(name);
book.addContent(author);
root.addContent(book);
book = new Element("book");
name = new Element("name");
author = new Element("author");
name.addContent("Java 7入门经典");
author.addContent("Ivor Horton");
book.setAttribute("price", "118");
book.addContent(name);
book.addContent(author);
root.addContent(book);
doc.addContent(root);
XMLOutputter xo = new XMLOutputter(Format.getCompactFormat()); // getPrettyFormat() 层次格式化
System.out.println(xo.outputString(doc));
return xo.outputString(doc);
}
}
分享到:
相关推荐
在IT行业中,XML(eXtensible Markup ...如果需要快速生成XML字符串,DOM4J和JDOM提供了便捷的API;而对于处理大型XML文件,SAX和StAX的低内存消耗特性更具优势。开发者可以根据项目需求选择合适的XML解析技术。
本文将深入探讨如何使用dom4j和jdom两种流行的Java库来解析XML文档,并通过具体的代码示例来展示它们的应用。 ### DOM4J DOM4J(Document Object Model for Java)是一个开放源代码的Java API,用于处理XML文档。...
### jdom解析XML文件及将字符串解析为XML #### 一、JDOM简介与环境搭建 JDOM(Java Document Object Model)是一种用Java语言编写的轻量级API,用于处理XML文档。它允许开发者轻松地读取、创建、修改XML文档,并将...
本文将深入探讨XML数据在前后台解析的过程中,重点介绍两种主流的Java XML解析库——JDOM和DOM4J,并提供实际运行的程序示例。同时,我们还会讨论如何使用jQuery在前端解析XML并展示数据。 首先,让我们了解XML的...
1. 性能:DOM4j通常比JDOM更快,因为它优化了内存使用和解析速度,特别是对于大型XML文件。 2. 简单性:JDOM的设计更为直观,对于初学者来说可能更容易上手。 3. 功能:DOM4j支持XPath,提供了更丰富的查询功能,而...
4. **扩展性**:DOM4J可以与许多其他Java库集成,如JAXB和JDOM,提供更多的XML处理能力。 总结,DOM4J是Java开发中处理XML的得力工具,无论是解析还是生成XML文档,都提供了高效且灵活的解决方案。通过深入理解DOM4...
这篇博客()可能详细介绍了如何使用DOM4J来生成和解析XML文件,这对于处理XML文档的开发人员来说是非常有用的工具。 **1. 生成XML文件** 生成XML文件主要涉及以下步骤: - **创建Document对象**:DOM4J通过`...
### JDOM 生成和解析 XML 字符串 #### 一、概述 JDOM(Java Document Object Model)是一种基于 Java 的 API,用于处理 XML 文档。它提供了一种简单且直观的方式来构建、修改以及读取 XML 文件。JDOM 主要有两个...
4. **XPath支持**:dom4j支持XPath表达式,允许开发者通过简洁的字符串路径来选取XML文档中的节点,大大提高了代码的可读性和效率。 5. **操作XML**:使用dom4j可以方便地添加、删除、修改XML元素和属性,以及遍历...
2. **DOM4J写入XML**:创建`Document`,添加元素和属性,然后使用`dom4j.io.XMLWriter`或`dom4j.io.OutputFormat`将`Document`写入文件。 在选择XML处理方式时,需要根据实际需求考虑内存消耗、处理速度以及API的...
**使用 JDOM 和 DOM4J 进行 XML 解析的关键步骤**: - **加载 XML 文件**:无论是 JDOM 还是 DOM4J,都可以通过类似的方式加载 XML 文件到内存中。 - **解析元素**:可以使用这些库提供的方法来遍历 XML 文档中的...
DOM4J提供了一种将XML对象模型转换为字符串的方法,可以使用`DocumentWriter`或者`XMLWriter`来实现XML的输出。通过设置适当的格式化选项,可以控制生成的XML是否带缩进、换行等。 3. **XML的修改**: 修改XML...
为了处理XML文档,Java提供了多种库,其中dom4j和JDOM是两个常用的选择。这两个库都是Java API,允许开发者对XML进行读取、解析、创建和修改操作。 **dom4j-1.6.1** dom4j是一款功能强大且灵活的Java XML库,它提供...
当结合使用DOM4J和JAXEN时,DOM4J作为XML解析和操作的库,而JAXEN则作为DOM4J中的XPath引擎,两者共同完成XML的解析、查询和操作任务。例如,我们可以先用DOM4J读取和解析XML文件,然后利用JAXEN的XPath能力来查找...
DOM4J提供了解析后的XML文档的遍历和操作接口。通过`Element`、`Attribute`等接口,我们可以轻松找到目标节点并进行修改。例如,如果要修改根元素`<root>`的某个子元素`<child>`的值,可以这样做: ```java ...
5. **文档对象的序列化与反序列化**:将DOM、JDOM或DOM4J构建的XML对象转换为字符串,或将字符串解析为XML对象。 在深入学习这些库时,你需要理解它们的核心类和方法,比如Document、Element、Attribute等,以及...
3. 保存更改:使用`org.jdom2.output.Format`和`XMLOutputter`或`Transformer`将`Document`对象转换为XML字符串或写入文件。 在实际开发中,选择DOM还是JDOM取决于需求。DOM适合小到中型的XML文件,且需要频繁随机...
相较于其他XML解析库如SAX、JDOM等,Dom4j具有更强大的功能与更好的性能。 为了使用Dom4j,我们需要添加其依赖到项目中。根据题目提供的标签信息,可以知道需要以下两个JAR包: - `dom4j-1.6.1.jar`:这是Dom4j的...
DOM(Document Object Model)是W3C制定的一种标准,它为XML和HTML文档提供了一种...在2Code和3Code这两个文件中,可能包含了这些库的具体使用示例,学习和理解这些源码可以帮助你更好地掌握DOM、JDOM和dom4j的用法。
4. 输出XML,使用`XMLOutputter`类将`Document`对象转换为字符串或写入文件。 **示例代码** ```java import org.jdom2.Document; import org.jdom2.Element; import org.jdom2.input.SAXBuilder; import org.jdom2...