1. 程式人生 > >maven中使用dom4j解析、生成XML的簡易方法

maven中使用dom4j解析、生成XML的簡易方法

此片文章主要寫一些關於如何在maven工程中使用dom4j來解析或生成XML的建議方法,實際可使用的寫法不僅限於如下所寫的樣例程式碼。此處進攻快速入手和提供思路使用。

首先配置pom.xml中的依賴的包

    <dependencies>
        <dependency>
            <groupId>dom4j</groupId>
            <artifactId>dom4j</artifactId>
            <version>1.6.1</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
        </dependency>
        <dependency>
            <groupId>jaxen</groupId>
            <artifactId>jaxen</artifactId>
            <version>1.1.6</version>
        </dependency>
    </dependencies>

上述配置中jaxen的包主要在使用Xpath時會被用到。

需要解析的樣例XML檔案

<?xml version="1.0" encoding="UTF-8" ?>
<resources>
    <product name="QQ">
        <account id="123456789">
            <nickname>qq-account-1</nickname>
            <password>qwe123qwe123</password>
            <level>56</level>
        </account>
        <account id="987654321">
            <nickname>qq-account-2</nickname>
            <password>ios9ios9ios9</password>
            <level>12</level>
        </account>
    </product>
    <product name="Netease">
        <account id="tom">
            <password>pwdOfTom</password>
            <capacity>1024</capacity>
        </account>
        <account name="Jim">
            <password>pwdOfJim</password>
            <capacity>2560</capacity>
        </account>
    </product>
</resources>

解析的java類
package com.jeremy;

import org.dom4j.*;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
import org.dom4j.xpath.DefaultXPath;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/**
 * Created by jeremysong on 1/7/2016.
 */
public class DomParser
{
    public static List<String> parseMethod1() throws DocumentException
    {
        List<String> result = new ArrayList<String>();

        SAXReader reader = new SAXReader();
        Document document = reader.read("E:\\IdeaProjects\\Example\\NetApp\\src\\main\\resources\\target.xml");
        XPath xPath = new DefaultXPath("/resources/product[@name='QQ']/account[@id='987654321']/password");
        List<Element> list = xPath.selectNodes(document.getRootElement());
        for (Element element : list)
        {
            System.out.println(element.getTextTrim());
            result.add(element.getTextTrim());
        }
        return result;
    }

    public static List<String> parseMethod2() throws DocumentException
    {
        List<String> result = new ArrayList<String>();

        SAXReader reader = new SAXReader();
        Document document = reader.read("E:\\IdeaProjects\\Example\\NetApp\\src\\main\\resources\\target.xml");
        List<Element> products = document.getRootElement().selectNodes("/resources/product");
        Iterator iterator = products.iterator();
        while (iterator.hasNext())
        {
            Element product = (Element) iterator.next();
            String name = product.attributeValue("name");
            System.out.println(name);
        }
        return result;
    }

    public static void generate()
    {
        Document doc = DocumentHelper.createDocument();
        Element root = doc.addElement("resources");

        Element product = root.addElement("product");
        product.addAttribute("name", "QQ");

        Element account = product.addElement("account");
        account.addAttribute("id", "123456789");

        Element nickname = account.addElement("nickname");
        nickname.setText("QQ-account-1");

        Element password = account.addElement("password");
        password.setText("123asd21qda");

        Element level = account.addElement("level");
        level.setText("56");

        PrintWriter pWriter = null;
        XMLWriter xWriter = null;
        try
        {
            pWriter = new PrintWriter("E:\\IdeaProjects\\Example\\NetApp\\src\\main\\generate.xml");
            xWriter = new XMLWriter(pWriter);
            xWriter.write(doc);
        } catch (Exception e)
        {
            e.printStackTrace();
        } finally
        {
            try
            {
                xWriter.flush();
                xWriter.close();
            } catch (IOException e)
            {
                e.printStackTrace();
            }
        }
    }
}
測試類:
import com.jeremy.DomParser;
import org.dom4j.DocumentException;
import org.junit.Test;

/**
 * Created by jeremysong on 1/7/2016.
 */
public class TestDomParser
{
    @Test
    public void testParseMethod1() throws DocumentException
    {
        DomParser.parseMethod1();
    }

    @Test
    public void testParseMethod2() throws DocumentException
    {
        DomParser.parseMethod2();
    }

    @Test
    public void testGenerate()
    {
        DomParser.generate();
    }
}

測試結果:

testParseMethod1執行結果



testParseMethod2執行結果


testGenerate執行結果

<?xml version="1.0" encoding="UTF-8"?>
<resources>
    <product name="QQ">
        <account id="123456789">
            <nickname>QQ-account-1</nickname>
            <password>123asd21qda</password>
            <level>56</level>
        </account>
    </product>
</resources>


相關推薦

maven使用dom4j解析生成XML簡易方法

此片文章主要寫一些關於如何在maven工程中使用dom4j來解析或生成XML的建議方法,實際可使用的寫法不僅限於如下所寫的樣例程式碼。此處進攻快速入手和提供思路使用。 首先配置pom.xml中的依賴的包 <dependencies> &

dom4j解析生成XML文檔

document xml dom4j 解析XML的兩種方法package cnslp.dom4j.com; import java.io.File; import java.util.Iterator; import org.dom4j.Attribute; import org.dom4j.D

Dom4j解析生成XML文件

一、前言     dom4j是一套非常優秀的java開源api,主要用於讀寫xml文件,具有效能優異、功能強大、和非常方便使用的特點。   另外xml經常用於資料交換的載體,像呼叫webservice傳遞的引數,以及資料做同步操作等等,   所以使用dom4

DOM4j解析修改刪除增加保存XML方法

exceptio set null 增加 gb2 itl str owin chang //XML文件 <?xml version="1.0" encoding="gb2312"?> <PhoneInfo> <Brand name="華為

Java之dom4j的簡單解析生成xml的應用

util 讀寫 pro artifact gettext depend bject sta rgs   一、dom4j是一個Java的XML API,是jdom的升級品,用來讀寫XML文件的。dom4j是一個十分優秀的JavaXML API,具有性能優異、功能強大和極其易使

使用POI和dom4j解析Excel生成Xml

工作中有時候我們需要使用Apache的POI來讀寫Excel檔案,而dom4j則用來解析或者生成Xml檔案,由於涉及到IO流,所以又使用了commons-io提供的IOUtils來關閉流。 需要的Jar包 一個應用POI和dom4j的簡單例子 im

Maven的POM倉庫座標(maven4)

一、POM ①含義:project  object  model  專案物件模型                 DOM:document 

Python使用FlaskMongoDB搭建簡易圖片伺服器

轉載:http://www.cppcns.com/shujuku/mongodb/119378.html 這篇文章主要介紹了Python中使用Flask、MongoDB搭建簡易圖片伺服器,本文是一個詳細完整的教程,需要的朋友可以參考下 1、前期準備 通過 pip 或 easy_insta

PBDOM 解析生成XML

1. PBDOM設定 1)新增pbdom120.pbd(%SYBASE%/Shared/PowerBuilder)到工程的pbl列表中 2) %SYBASE%/Shared/PowerBuilder應該在系統路徑或者應用程式的路徑中(也就是pbdom要使用此路徑下的pbdom

Qt 5讀取解析生成和儲存JSON檔案

專案中用到了一些JSON的東西,為了方便就做了一層簡單的封裝方便以後使用,包括了JSON的讀取、解析、生成和儲存這些基本功能 json.h檔案 #ifndef JSON_H #define JSON_H #include <QJsonArray> #include &l

maven全域性配置檔案settings.xml及專案pom.xml的詳解完整版

maven中全域性配置檔案settings.xml及專案pom.xml的詳解   一、apache maven的簡介     Apache Maven,是一個軟體(特別是Java軟體)專案管理及自動構建工具,由Apache軟體基金會所提供。基於專案物件

maven全域性配置檔案settings.xml及專案pom.xml的詳解3

(2)   properties 作用:對應profile的擴充套件屬性列表。 maven屬性和ant中的屬性一樣,可以用來存放一些值。這些值可以在pom.xml中的任何地方使用標記${X}來使用,這裡X是指屬性的名稱。屬性有五種不同的形式,並且都能在se

Xmldom4j解析以及寫入xml文件時的亂碼問題

book.xml <?xml version="1.0" encoding="UTF-8"?> <書架>   <書>     <書名>Java就業基礎教程</書名>      <作者>張孝祥</作者

XQRCode 一個非常方便實用的二維碼掃描解析生成

XQRCode 一個非常方便實用的二維碼掃描、解析、生成庫 關於我 特點 支援快速整合條形碼、二維碼掃描功能。 支援自定義掃描介面。 支援生成帶圖示的二維碼。 支援生成帶背景圖片的複雜二維碼。 支援二維碼解析功能 1、

JAXB解析生成XML

使用JAXB可以快速完成Java類到XML的對映,方便XML檔案的解析與生成。常用註解@XmlRootElement(name = "Country")將Java類或列舉型別對映成XML中根元素,設定name屬性的值可指定義根元素名稱,不設定則預設為型別首字母小寫的名稱。@X

Maven整合Struts2Spring3與Hibernate

利用Maven對專案進行管理,引入Jar包 首先引入Struts2相管理的jar包,Struts2安全的版本在2.15.1以上 <!-- struts2核心包 --> <dependency> <groupId>org.apa

Dom解析生成XML文件

一、前言     Dom即檔案物件模型(Document Object Model),是W3C組織推薦的使用可擴充套件標記性語言的標準介面, 它主要用於讀寫xml文件,使用起來還是非常不錯的。  另外Dom將整個xml檔案對映成一個有層次的節點的結構,分別1級、2級到多級

Android 解析修改xml檔案

一、DOM解析XML檔案 public static void main(String[] args) { File file = new File("d:\\WordChronos.xml"); DocumentBuilderFactory dbf =

ionic創建工程遇到異常錯誤及解決方法

右鍵 ive hub reac 個推 註意 code down 添加 1. 創建工程——download failed ionic start myApp tabs 遇到如下錯誤 Downloading--Failed! Error:Timeout of 25000m

關於如何在Python使用靜態類或抽象方法的權威指南

Python中方法的工作方式 方法是儲存在類屬性中的函式,你可以用下面這種方式宣告和訪問一個函式 >>> class Pizza(object): ... def __init__(self, size): ... self.size