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();
}
}
你看呢。。。。