`
lily_better
  • 浏览: 7871 次
文章分类
社区版块
存档分类
最新评论

使用dom4j和jdom解析与生成字符串型XML的代码示例

xml 
阅读更多
记录一下使用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);
    }
}
分享到:
评论

相关推荐

    DOM、SAX、DOM4J、JDOM、StAX生成XML并返回XML字符串形式

    在IT行业中,XML(eXtensible Markup ...如果需要快速生成XML字符串,DOM4J和JDOM提供了便捷的API;而对于处理大型XML文件,SAX和StAX的低内存消耗特性更具优势。开发者可以根据项目需求选择合适的XML解析技术。

    dom4j和jdom解析XML小例子

    本文将深入探讨如何使用dom4j和jdom两种流行的Java库来解析XML文档,并通过具体的代码示例来展示它们的应用。 ### DOM4J DOM4J(Document Object Model for Java)是一个开放源代码的Java API,用于处理XML文档。...

    jdom解析XML文件and把字符串解析成XML

    ### jdom解析XML文件及将字符串解析为XML #### 一、JDOM简介与环境搭建 JDOM(Java Document Object Model)是一种用Java语言编写的轻量级API,用于处理XML文档。它允许开发者轻松地读取、创建、修改XML文档,并将...

    xml数据前后台解析:jdom与dom4j源码,程序可以跑

    本文将深入探讨XML数据在前后台解析的过程中,重点介绍两种主流的Java XML解析库——JDOM和DOM4J,并提供实际运行的程序示例。同时,我们还会讨论如何使用jQuery在前端解析XML并展示数据。 首先,让我们了解XML的...

    JAVA 解析XML 的JAr包 DOM4j.Jar JDOM.jar

    1. 性能:DOM4j通常比JDOM更快,因为它优化了内存使用和解析速度,特别是对于大型XML文件。 2. 简单性:JDOM的设计更为直观,对于初学者来说可能更容易上手。 3. 功能:DOM4j支持XPath,提供了更丰富的查询功能,而...

    Dom4j解析和生成XML文档

    4. **扩展性**:DOM4J可以与许多其他Java库集成,如JAXB和JDOM,提供更多的XML处理能力。 总结,DOM4J是Java开发中处理XML的得力工具,无论是解析还是生成XML文档,都提供了高效且灵活的解决方案。通过深入理解DOM4...

    dom4J生成xml、解析xml、生成xml文件实例

    这篇博客()可能详细介绍了如何使用DOM4J来生成和解析XML文件,这对于处理XML文档的开发人员来说是非常有用的工具。 **1. 生成XML文件** 生成XML文件主要涉及以下步骤: - **创建Document对象**:DOM4J通过`...

    Jdom 生成和解析XML字符串

    ### JDOM 生成和解析 XML 字符串 #### 一、概述 JDOM(Java Document Object Model)是一种基于 Java 的 API,用于处理 XML 文档。它提供了一种简单且直观的方式来构建、修改以及读取 XML 文件。JDOM 主要有两个...

    dom4j-jar与dom4j解析xml文档介绍

    4. **XPath支持**:dom4j支持XPath表达式,允许开发者通过简洁的字符串路径来选取XML文档中的节点,大大提高了代码的可读性和效率。 5. **操作XML**:使用dom4j可以方便地添加、删除、修改XML元素和属性,以及遍历...

    DOM、SAX、JDOM、DOM4J读写xml文档

    2. **DOM4J写入XML**:创建`Document`,添加元素和属性,然后使用`dom4j.io.XMLWriter`或`dom4j.io.OutputFormat`将`Document`写入文件。 在选择XML处理方式时,需要根据实际需求考虑内存消耗、处理速度以及API的...

    DOM、JDOM、DOM4J解析XML实例.pdf

    **使用 JDOM 和 DOM4J 进行 XML 解析的关键步骤**: - **加载 XML 文件**:无论是 JDOM 还是 DOM4J,都可以通过类似的方式加载 XML 文件到内存中。 - **解析元素**:可以使用这些库提供的方法来遍历 XML 文档中的...

    xml(jdom-dom4j).rar_DOM4J_dom4j xml java

    DOM4J提供了一种将XML对象模型转换为字符串的方法,可以使用`DocumentWriter`或者`XMLWriter`来实现XML的输出。通过设置适当的格式化选项,可以控制生成的XML是否带缩进、换行等。 3. **XML的修改**: 修改XML...

    dom4j-1.6.1 和 jdom

    为了处理XML文档,Java提供了多种库,其中dom4j和JDOM是两个常用的选择。这两个库都是Java API,允许开发者对XML进行读取、解析、创建和修改操作。 **dom4j-1.6.1** dom4j是一款功能强大且灵活的Java XML库,它提供...

    dom4j解析XML的两个JAR包(dom4j-1.6.1.jar 和 jaxen.jar)

    当结合使用DOM4J和JAXEN时,DOM4J作为XML解析和操作的库,而JAXEN则作为DOM4J中的XPath引擎,两者共同完成XML的解析、查询和操作任务。例如,我们可以先用DOM4J读取和解析XML文件,然后利用JAXEN的XPath能力来查找...

    dom4j以String的方式读取XML的内容,并给String的值赋值,写入XML中

    DOM4J提供了解析后的XML文档的遍历和操作接口。通过`Element`、`Attribute`等接口,我们可以轻松找到目标节点并进行修改。例如,如果要修改根元素`&lt;root&gt;`的某个子元素`&lt;child&gt;`的值,可以这样做: ```java ...

    dom jdom dom4j 案例

    5. **文档对象的序列化与反序列化**:将DOM、JDOM或DOM4J构建的XML对象转换为字符串,或将字符串解析为XML对象。 在深入学习这些库时,你需要理解它们的核心类和方法,比如Document、Element、Attribute等,以及...

    Dom JDom 解析xml 文件

    3. 保存更改:使用`org.jdom2.output.Format`和`XMLOutputter`或`Transformer`将`Document`对象转换为XML字符串或写入文件。 在实际开发中,选择DOM还是JDOM取决于需求。DOM适合小到中型的XML文件,且需要频繁随机...

    Dom4j遍历解析XML

    相较于其他XML解析库如SAX、JDOM等,Dom4j具有更强大的功能与更好的性能。 为了使用Dom4j,我们需要添加其依赖到项目中。根据题目提供的标签信息,可以知道需要以下两个JAR包: - `dom4j-1.6.1.jar`:这是Dom4j的...

    DOM JDOM dom4j 实例源码

    DOM(Document Object Model)是W3C制定的一种标准,它为XML和HTML文档提供了一种...在2Code和3Code这两个文件中,可能包含了这些库的具体使用示例,学习和理解这些源码可以帮助你更好地掌握DOM、JDOM和dom4j的用法。

    Jdom解析XML

    4. 输出XML,使用`XMLOutputter`类将`Document`对象转换为字符串或写入文件。 **示例代码** ```java import org.jdom2.Document; import org.jdom2.Element; import org.jdom2.input.SAXBuilder; import org.jdom2...

Global site tag (gtag.js) - Google Analytics