javadom4j解析
㈠ java中dom4j解析xml文件怎麼獲取節點屬性
dom4j中,使用Element.attributes方法可以獲取到節點的屬性,而使用elements則可以獲取相應的子節點
比如:
Element root = doc.getRootElement();
List attrList = root.attributes();
for (int i = 0; i < attrList.size(); i++) {
//屬性的取得
Attribute item = (Attribute)attrList.get(i);
System.out.println(item.getName() + "=" + item.getValue());
}
List childList = root.elements();
for (int i = 0; i < childList.size(); i++) {
//子節點的操作
Element it = (Element) childList.get(i);
//對子節點進行其它操作...
}
㈡ 在java中怎麼用dom4j解析XML文件
以下是曾經寫的一個解析XML獲取XML中圖片流的字元串,獲取並轉化為圖片的工具類
裡面海帶喲base64編碼,具體代碼如下,希望能幫到你
packagecom.asidel.web.util;
importjava.io.File;
importjava.io.FileOutputStream;
importjava.io.OutputStream;
importjava.util.Iterator;
importjava.util.List;
importorg.dom4j.Document;
importorg.dom4j.DocumentHelper;
importorg.dom4j.Element;
importsun.misc.BASE64Decoder;
importsun.misc.BASE64Encoder;
importcom.dragonsoft.adapter.AdapterSend;
publicclassXMLparserUtil{
/**
*@Title:getXp
*@Description:解析XML
*@return
*/
publicstaticStringgetXp(StringxmlStr,Stringsfzh){
Stringxp="";
try{
//將String轉化成xml
Documentdocument=DocumentHelper.parseText(xmlStr);
//獲取Value節點下的Row子節點
ListRowElementList=XMLparserUtil.getRowElementList(document);
if(RowElementList!=null&&RowElementList.size()>0){
ElementRowElement3=(Element)RowElementList.get(RowElementList.size()-1);
//根據節點獲取值
StringxpBase64=RowElement3.elementTextTrim("Data");
//System.out.println("xpBase64:"+xpBase64);
if(!"".equals(xpBase64)&&xpBase64!=null){
xp=XMLparserUtil.getDecodingBASE64(xpBase64,sfzh);
}
//System.out.println("xp:"+xp);
}
}catch(Exceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
xp="";
}
returnxp;
}
/**
*@Title:getEncodingBASE64
*@Description:進行BASE64編碼
*@paramstring
*@return
*/
(Stringstring){
StringreturnStr="";
if(!"".equals(string)&&string!=null){
try{
BASE64Encoderbase64Encoder=newBASE64Encoder();
returnStr=base64Encoder.encode(string.getBytes());
}catch(Exceptione){
//TODO:handleexception
e.printStackTrace();
}
}
returnreturnStr;
}
/**
*@Title:getDecodingBASE64
*@Description:將BASE64編碼的字元串進行解碼
*@paramstring
*@return
*/
(StringimgStr,StringimgName){
StringimgFilePath="";//新生成的圖片
BASE64Decoderdecoder=newBASE64Decoder();
if(!"".equals(imgStr)&&imgStr!=null){
try{
byte[]b=decoder.decodeBuffer(imgStr);
for(inti=0;i<b.length;++i){
if(b[i]<0){//調整異常數據
b[i]+=256;
}
}
//生成jpeg圖片
PathUtilpathUtil=newPathUtil();
Stringzdryxppath=pathUtil.getWebRoot()+"uploadImages/";
System.out.println("zdryxppath="+zdryxppath);
FilepathDir=newFile(zdryxppath);//如果目錄不存在就創建該目錄
if(!pathDir.exists()){
pathDir.mkdirs();
}
StringimgFileRealPath=zdryxppath+imgName+".jpg";//新生成的圖片
OutputStreamout=newFileOutputStream(imgFileRealPath);
out.write(b);
out.flush();
out.close();
imgFilePath="uploadImages/"+imgName+".jpg";
}catch(Exceptione){
e.printStackTrace();
}
}
returnimgFilePath;
}
/**
*@Title:getRowElementList
*@Description:獲取節點列表
*@paramdocument
*@paramstring
*@return
*
*/
(Documentdocument){
ListreturnRowElementList=null;
//獲取根節點
ElementrootElement=document.getRootElement();
//System.out.println("rootElement:"+rootElement);
//獲取根節點下的Method子節點
IteratorMethodElementList=rootElement.elementIterator("Method");
//遍歷Method節點
while(MethodElementList.hasNext()){
ElementMethodElement=(Element)MethodElementList.next();
//System.out.println("Method:"+MethodElement);
//獲取Method節點下的Items子節點
IteratorItemsElementList=MethodElement.elementIterator("Items");
//遍歷Items節點
while(ItemsElementList.hasNext()){
ElementItemsElement=(Element)ItemsElementList.next();
//System.out.println("Items:"+ItemsElement);
//獲取Items節點下的Item子節點
IteratorItemElementList=ItemsElement.elementIterator("Item");
//遍歷Item節點
while(ItemElementList.hasNext()){
ElementItemElement=(Element)ItemElementList.next();
//System.out.println("Item:"+ItemElement);
//獲取Item節點下的Value子節點
IteratorValueElementList=ItemElement.elementIterator("Value");
//遍歷Value節點
while(ValueElementList.hasNext()){
ElementValueElement=(Element)ValueElementList.next();
//System.out.println("Value:"+ValueElement);
returnRowElementList=ValueElement.elements("Row");
////獲取Value節點下的Row子節點
//List
//if(RowElementList!=null&&RowElementList.size()>
//0){
//ElementRowElement3=(Element)
//RowElementList.get(RowElementList.size()-1);
////System.out.println("Row:"+RowElement3);
////根據節點獲取值
//xp=RowElement3.elementTextTrim("Data");
//System.out.println("xp:"+xp);
//}
}
}
}
}
returnreturnRowElementList;
}
publicstaticvoidmain(String[]args){}
}
㈢ java的XML解析JDOM和DOM4J解析方式有什麼區別》
其實我覺得差不多,xml的解析方式有sax和dom解析兩種方式,而jdom和dom4j只是解析工具。其中sax解析是針對事件進行解析,效率較高吧,而最常用的是dom解析,就是從根元素開始對xml進行解析,因為是從頭開始,所以當文檔很大時,有時效率不高,另外修改刪除也不是很方便。
jdom和dom4j用起來差不多,就是方法有一點小不同。你上網查查就知道了
㈣ java dom4j解析一個xml文件怎麼解析
步驟:
1. 引入jar文件(dom4j.jar)
2. 創建指向XML文檔的輸入流.
InputStream is = new FileInputStream("文件地址");
3. 創建一個XML讀取工具對象
SAXReader sr = new SAXReader();
4. 通過讀取工具, 讀取xml文檔的輸入流. 並得到文檔對象
Document doc = sr.read(is);
5. 通過文檔對象, 獲取XML文檔的根節點對象
Element root = doc.getRootElement();
㈤ JAVA里dom4j解析xml
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.test;
import java.io.File;
import java.net.URISyntaxException;
import java.net.URL;
import java.util.Iterator;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class Dom4jExample {
public static void main(String[] args) throws DocumentException, URISyntaxException {
URL urlfile = Dom4jExample.class.getResource("Config.xml");
File xml = new File(urlfile.toURI());
SAXReader saxReader = new SAXReader();
Document document = saxReader.read(xml);
Element root = document.getRootElement(); //config
for ( Iterator iter = root.elementIterator(); iter.hasNext(); ) {
Element element = (Element) iter.next();
Attribute ageAttrIP=element.attribute("ip");
String ip = ageAttrIP.getValue();
System.out.println(ip);
Attribute ageAttrPORT=element.attribute("port");
String port = ageAttrPORT.getValue();
System.out.println(port);
}
}
}
找到之後,再把String轉換成你需要的類型,就不寫了。
㈥ java dom4j解析CDATA
一個節點最好只寫一個CDATA,你可以改下xml
<returnData><![CDATA[ 這格式太個性了 ]]></returnData
<returnData><![CDATA[ 哥是來學習的! ]]></returnData
<returnData><![CDATA[ 你確定? ]]></returnData>
用DOM4J拿到這個list再做解析
㈦ 怎樣應用Dom4j對自動化生成的XML文件進行解析
是的,dom4j既可以解析xml文檔,也可以創建xml文檔。使用dom4j必須導入dom4j的jar包。
以下是用dom4j來解析xml文件生成另一個xml文檔的過程,我在這里只是將新生成的xml的文檔列印,dom4j也可以新生成的xml的文檔保存到磁碟。
import java.io.File;
import java.util.Iterator;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class DomTest {
/**
* @param args
*/
public static void main(String[] args) {
try {
//讀取xml文件信息
File inputXml=new File("D:/test.xml");
SAXReader saxReader = new SAXReader();
Document document = saxReader.read(inputXml);
//獲取根節點<xml>元素
Element root = document.getRootElement();
//創建xml文檔
Document doc = DocumentHelper.createDocument();
//創建表格的根節點<table>元素
Element rootElement = DocumentHelper.createElement("table");
doc.setRootElement(rootElement);
//獲取根節點<xml>元素的子節點<row>元素列表
Iterator iter = root.elementIterator("row");
//循環列表
while(iter.hasNext()) {
//得到每個<row>元素
Element rowEle=(Element)iter.next();
//創建表格中的行<tr>元素
Element trElement = rootElement.addElement("tr");
//創建表格中行<tr>元素的子元素列<td>元素
//第一列存儲<row>元素的ballsnum屬性值
Element ballsnum = trElement.addElement("td");
ballsnum.addText(rowEle.attributeValue("ballsnum"));
//第二列存儲<row>元素的opentime屬性值
Element opentime = trElement.addElement("td");
opentime.addText(rowEle.attributeValue("opentime"));
//第三列存儲<row>元素的opencode屬性值
Element opencode = trElement.addElement("td");
opencode.addText(rowEle.attributeValue("opencode"));
//第四列存儲<row>元素的expect屬性值
Element expect = trElement.addElement("td");
expect.addText(rowEle.attributeValue("expect"));
}
System.out.println(doc.asXML());
} catch (Exception e) {
e.printStackTrace();
}
}
}
我將
<?xml version="1.0" encoding="UTF-8"?>
<xml>
<row ballsnum="3" opentime="2014-01-19 21:30:00" opencode="05,14,16,21,29,30|12" expect="14008"/>
<row ballsnum="3" opentime="2014-01-16 21:30:00" opencode="08,10,12,14,18,28|14" expect="14007"/>
</xml>
存儲在D盤下的test.xml文件中
我讀取D盤下的test.xml文件中的xml內容生成了一個表格
System.out.println(doc.asXML());語句將在控制台列印表格內容
列印結果如下:
<?xml version="1.0" encoding="UTF-8"?>
<table>
<tr>
<td>3</td>
<td>2014-01-19 21:30:00</td>
<td>05,14,16,21,29,30|12</td>
<td>14008</td>
</tr>
<tr>
<td>3</td>
<td>2014-01-16 21:30:00</td>
<td>08,10,12,14,18,28|14</td>
<td>14007</td>
</tr>
</table>
㈧ java dom4j解析xml 的編程思想是什麼
就是把整個XML當成一顆document樹來解析,每棵樹的主幹,就相當於根標簽,根標簽下面的其他標簽就相當於樹的一個節點,或者說分支,LZ你該去學的是XML的DOM的編程,dom4j只是別人寫的好的工具而已,你可以用dom4j去解析XML文本,結果,你要什麼結果,別人寫這個工具的時候怎麼知道你要從哪個XML文檔裡面得到哪些內容呢,所以都提供好的一些API給你自己去調用,通過這些API你就可以得到一個XML文檔裡面的任意內容了,你要調用dom4j裡面的API去查,例如Document.getRootElement(),這個方法就可以幫你得到根節點,。說好的是解析,又怎麼會存入資料庫呢。
㈨ java 解析xml,dom4j解析,如下:
// 你要替換成你xml的地址
public static void read()
{
// 讀取xml內容為字元串
StringBuffer xmlContent = new StringBuffer();
byte[] b = new byte[8*1024];
InputStream in = null;
try
{
in = new FileInputStream("D:/123.xml");
while(in.read(b) != -1){
xmlContent.append(new String(b));
}
in.close();
}
catch (FileNotFoundException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
finally{
if (in != null)
{
try
{
in.close();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
// 使用正則表達式匹配
Pattern compile = Pattern.compile("<DETAIL>[\\s\\S]*</DETAIL>");
Matcher matcher = compile.matcher(xmlContent.toString());
while (matcher.find())
{
System.out.println(matcher.group(0));
}
}
㈩ (java)dom4j解析xml的問題
publicstaticvoidmain(String[]args){
try{
Documentdoc=newSAXReader().read("d:/yourXml.xml");
Elementroot=doc.getRootElement();
ElementeSCA=root.element("SubControlArea");
System.out.println(eSCA.attributeValue("ID"));
List<Element>es=eSCA.elements();
for(Elemente:es){
System.out.println(e.getTextTrim());
if(!(e.attribute("resource")==null)){
System.out.println(e.attributeValue("resource"));
}
}
}catch(DocumentExceptione){
e.printStackTrace();
}
}
你看呢。。。。