在java中怎么用dom4j解析XML文件??
<rowsno="1"id="学生编号"><columnname="ID">1</column>...
<row sno="1" id="学生编号">
<column name="ID">1</column> 展开
<column name="ID">1</column> 展开
3个回答
展开全部
以下是曾经写的一个解析XML获取XML中图片流的字符串,获取并转化为图片的工具类
里面海带哟base64编码,具体代码如下,希望能帮到你
package com.asidel.web.util;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
import com.dragonsoft.adapter.AdapterSend;
public class XMLparserUtil {
/**
* @Title: getXp
* @Description: 解析XML
* @return
*/
public static String getXp(String xmlStr,String sfzh) {
String xp = "";
try {
// 将String转化成xml
Document document = DocumentHelper.parseText(xmlStr);
// 获取Value节点下的Row子节点
List RowElementList = XMLparserUtil.getRowElementList(document);
if (RowElementList != null && RowElementList.size() > 0) {
Element RowElement3 = (Element) RowElementList.get(RowElementList.size() - 1);
// 根据节点获取值
String xpBase64 = RowElement3.elementTextTrim("Data");
// System.out.println("xpBase64:" + xpBase64);
if (!"".equals(xpBase64) && xpBase64 != null) {
xp = XMLparserUtil.getDecodingBASE64(xpBase64, sfzh);
}
// System.out.println("xp:" + xp);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
xp = "";
}
return xp;
}
/**
* @Title: getEncodingBASE64
* @Description: 进行 BASE64 编码
* @param string
* @return
*/
public static String getEncodingBASE64(String string) {
String returnStr = "";
if (!"".equals(string) && string != null) {
try {
BASE64Encoder base64Encoder = new BASE64Encoder();
returnStr = base64Encoder.encode(string.getBytes());
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
return returnStr;
}
/**
* @Title: getDecodingBASE64
* @Description: 将 BASE64 编码的字符串进行解码
* @param string
* @return
*/
public static String getDecodingBASE64(String imgStr, String imgName) {
String imgFilePath = "";// 新生成的图片
BASE64Decoder decoder = new BASE64Decoder();
if (!"".equals(imgStr) && imgStr != null) {
try {
byte[] b = decoder.decodeBuffer(imgStr);
for (int i = 0; i < b.length; ++i) {
if (b[i] < 0) {// 调整异常数据
b[i] += 256;
}
}
// 生成jpeg图片
PathUtil pathUtil = new PathUtil();
String zdryxppath = pathUtil.getWebRoot()+"uploadImages/";
System.out.println("zdryxppath="+zdryxppath);
File pathDir = new File(zdryxppath);// 如果目录不存在就创建该目录
if (!pathDir.exists()) {
pathDir.mkdirs();
}
String imgFileRealPath = zdryxppath + imgName + ".jpg";// 新生成的图片
OutputStream out = new FileOutputStream(imgFileRealPath);
out.write(b);
out.flush();
out.close();
imgFilePath = "uploadImages/" + imgName + ".jpg";
} catch (Exception e) {
e.printStackTrace();
}
}
return imgFilePath;
}
/**
* @Title: getRowElementList
* @Description: 获取节点列表
* @param document
* @param string
* @return
*
*/
public static List getRowElementList(Document document) {
List returnRowElementList = null;
// 获取根节点
Element rootElement = document.getRootElement();
// System.out.println("rootElement:"+rootElement);
// 获取根节点下的Method子节点
Iterator MethodElementList = rootElement.elementIterator("Method");
// 遍历Method节点
while (MethodElementList.hasNext()) {
Element MethodElement = (Element) MethodElementList.next();
// System.out.println("Method:"+MethodElement);
// 获取Method节点下的Items子节点
Iterator ItemsElementList = MethodElement.elementIterator("Items");
// 遍历Items节点
while (ItemsElementList.hasNext()) {
Element ItemsElement = (Element) ItemsElementList.next();
// System.out.println("Items:"+ItemsElement);
// 获取Items节点下的Item子节点
Iterator ItemElementList = ItemsElement.elementIterator("Item");
// 遍历Item节点
while (ItemElementList.hasNext()) {
Element ItemElement = (Element) ItemElementList.next();
// System.out.println("Item:"+ItemElement);
// 获取Item节点下的Value子节点
Iterator ValueElementList = ItemElement.elementIterator("Value");
// 遍历Value节点
while (ValueElementList.hasNext()) {
Element ValueElement = (Element) ValueElementList.next();
// System.out.println("Value:"+ValueElement);
returnRowElementList = ValueElement.elements("Row");
// // 获取Value节点下的Row子节点
// List
// if (RowElementList != null && RowElementList.size() >
// 0) {
// Element RowElement3 = (Element)
// RowElementList.get(RowElementList.size() - 1);
// // System.out.println("Row:"+RowElement3);
// // 根据节点获取值
// xp = RowElement3.elementTextTrim("Data");
// System.out.println("xp:" + xp);
// }
}
}
}
}
return returnRowElementList;
}
public static void main(String[] args) {}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询