在java中怎么用dom4j解析XML文件??

<rowsno="1"id="学生编号"><columnname="ID">1</column>... <row sno="1" id="学生编号">
<column name="ID">1</column>
展开
 我来答
282518588
2014-03-25 · TA获得超过688个赞
知道小有建树答主
回答量:1383
采纳率:50%
帮助的人:379万
展开全部

以下是曾经写的一个解析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) {}
}
Mr_陈帅康
2014-03-24 · TA获得超过1338个赞
知道小有建树答主
回答量:300
采纳率:75%
帮助的人:136万
展开全部

附件里面为一个简单的解析,可以拿去参考一下,如有不懂请追问。

追问
不行啊 取不到1里面ID的值啊
追答
用我给你的那个类里面的name1.getText()就能获取到中间的值了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-03-25
展开全部
引入dom4j的包,直接用dom,sex就行了呀
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式