1. 程式人生 > >Xml字串dom4j解析

Xml字串dom4j解析

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;


import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;




public class Dom4j
{


    public static Map<String, String> 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()); // 拿到根節點的名稱


            List<Map<String, String>> list = new ArrayList<>();


            recursiveNode(rootElt, list);


            List<Map<String, String>> resultList = list;


            Map<String, String> retMap = new HashMap<>();
            for (int i = 0; i < resultList.size(); i++)
            {
                Map map = resultList.get(i);


                for (Iterator iterator = map.keySet().iterator(); iterator.hasNext();)
                {
                    String key = (String)iterator.next();
                    retMap.put(key, (String)map.get(key));


                }
            }


            System.out.println("reMap" + retMap);


            return retMap;


        }
        catch (DocumentException e)
        {
            e.printStackTrace();


        }
        catch (Exception e)
        {
            e.printStackTrace();


        }
        return null;
    }


    /**
     * 遞迴遍歷所有的節點獲得對應的值
     *
     * @param
     */
    private static void recursiveNode(Element root, List<Map<String, String>> list)
    {


        // 遍歷根結點的所有孩子節點
        HashMap<String, String> map = new HashMap<>();
        for (Iterator iter = root.elementIterator(); iter.hasNext();)
        {
            Element element = (Element)iter.next();
            if (element == null)
            {
                continue;
            }
            // 獲取屬性和它的值
            for (Iterator attrs = element.attributeIterator(); attrs.hasNext();)
            {
                Attribute attr = (Attribute)attrs.next();
                System.out.println(attr);
                if (attr == null)
                {
                    continue;
                }
                String attrName = attr.getName();
                System.out.println("attrname" + attrName);
                String attrValue = attr.getValue();


                map.put(attrName, attrValue);
            }
            //如果該節點含有文字資料,也就是葉節點
            // 如果有PCDATA,則直接提出
            if (element.isTextOnly())
            {
                String innerName = element.getName();
                String innerValue = element.getText();


                map.put(innerName, innerValue);
                list.add(map);
            }
            else
            {
                // 遞迴呼叫
                recursiveNode(element, list);
            }
        }
    }


}

相關推薦

Xml字串dom4j解析

import java.util.ArrayList;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map;import org.dom4j.

XML基礎--DOM4J解析

dom4j解析1.XML基礎概念 XML:可擴展標記語言 概念: 可擴展: 標簽名可以自己定義 <hehe></hehe> <呵呵></呵呵> 命名規範:不能用數字開頭 不能使用純數字 區分大小寫

java基礎 xml 使用dom4j解析 xml文件 servlet根據pattern 找到class

col demo gpo string java OS pattern mapping unit package com.swift.kaoshi; import java.io.File; import java.util.List; import java.util

XMLdom4j解析

解析原理常用API1.  SaxReader物件        a)   read(...)  載入執行xml文件2.  Document物件        a)   getRootElement( )   獲得根元素3.  Element物件        a)   ele

java dom4j 解析xml字串的操作例項

package test; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import org.dom4j.Document; import org.dom4j.Doc

dom4j解析xml檔案 或者xml格式字串

  主要記錄的是專案中遇到的解析xml報文 獲取指定資料的方法,怕以後會忘,記錄一下   導包:dom4j(版本根據需要,不會造成相容錯誤就可以)  主要思路:利用遞迴的形式,解析xml檔案,首先附錄遞迴的方法,因為要求是需要把抓取到的資料放到指定檔案,並且現在只是一個de

使用dom4j解析xml格式字串,獲取標籤屬性和內容

本文解析XML格式字串引入的是: dom4j-1.6.1.jar具體程式碼如下: /**      * 解析xml字串,獲取各項屬性內容      * readXML方法描述:      *      * @author : sunyan      * @createTi

使用 dom4j 解析XML格式的字串的時候,字串沒問題,輸出結果總是空,也不報錯

遇到這型別問題,多半是因為字串的格式不對。可以嘗試著在字串中的結束標籤前面加幾個空格。 使用程式碼解決: /** * 將 String 型別的 XML 加空格和回車 * @param string * @return */ private Str

dom4j解析xml

nodes 屬性 介紹 color 後繼 util node src -- 首先我要說明,本文全部參考http://blog.csdn.net/yyywyr/article/details/38359049; 推薦:http://www

使用dom4j解析xml

iterator 問題 getclass etc tac iter throws xml文件 encoding 一.代碼(java代碼): 1. 使用InputStream: /** * 02 * 使用此種方式獲得InputStream,

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:使用DOM4J解析XML文檔

文本 class 中產 獲取 ber exce int() logs hone 一、概述 DOM4J是一個易用的、開源的庫,用於XML、XPath和XSLT中。采用了Java集合框架並完全支持DOM、SAX、和JAXP。 DOM4J最大的特色是使用大量的接口,主要接口都在o

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

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

在java項目中怎樣利用Dom4j解析XML文件獲取數據

avi conf get 自己 mar dom4j eas localhost b2c 在曾經的學習.net時常常會遇到利用配置文件來解決項目中一些須要常常變換的數據。比方數據庫的連接字符串兒等。這個時候在讀取配置文件的時候。我們一般會用到一個雷configuratio

使用dom4j 解析xml

package png servle dom4j read .cn cati nbsp test web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://www.exa

Dom4j解析語音數據XML文檔(註意ArrayList多次添加對象,會導致覆蓋之前的對象)

value exc 根節點 屬性 repl 叠代器 信息 ledir gettext 今天做的一個用dom4j解析聲音文本的xml文檔時,我用ArrayList來存儲每一個Item的信息,要註意ArrayList多次添加對象,會導致覆蓋之前的對象;解決方案是在最後將對象添加

Dom4j解析XML基本操作

.org oot 進行 元素 ray ext2 single util ati Dom4j 是一個易用的、開源的庫,用於 XML , XPath 和 XSLT 。它應用於 Java 平臺,采用了 Java 集合框架並完全支持 DOM , SAX 和 JAXP 。 要使用

XML文件解析-DOM4J方式和SAX方式

public bsp input main saxparser exception element rac default 最近遇到的工作內容都是和xml內容解析相關的. 1圖片數據以base64編碼的方式保存在xml的一個標簽中,xml文件通過接口的方式發送給我,然後我去

關於dom4j解析xml

int 結果 iterator get next info tor 小白 節點 一:相關jar包 dom4j-1.6.1.jar 二:用例xml文件 三:解析 註:可能有的小白不知道如果獲取節點,so,you can: for (Iterator<Element

在java中使用dom4j解析xml

() while 9.png eval ted eva har main root 創建xml文檔並輸出到文件 import java.io.File; import java.io.FileOutputStream; import org.dom4j.Documen