本文目录一览:
- 1、在java中怎么用dom4j解析XML文件??
- 2、java中用dom4j如何遍历循环XML各个节点,将树状结构输出到控制台??请帮忙写出代码,谢谢!
- 3、java中dom4j解析xml文件怎么获取节点属性
在java中怎么用dom4j解析XML文件??
以下是曾经写的一丛搏个解析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) {}
}
java中用dom4j如何遍历循环XML各个节点,将树状结构输出到控制台??请帮忙写出代码,谢谢!
import java.io.File;import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.Element;import org.dom4j.io.SAXReader;public class TestXML { public static void main(String[] args) { SAXReader reader = new SAXReader(); try { Document document = reader.read(new File("test.xml")); Element root = document.getRootElement(); listNodes(root, ""); } catch (DocumentException e) { e.printStackTrace(); } } private static void listNodes(Element node, String prefix) { System.out.println(prefix + node.getName()); for (int i = 0, size = node.nodeCount(); i size; i++) { org.dom4j.Node n = node.node(i); if (n instanceof Element) { listNodes((Element) n, prefix + " "); } } }}-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);
//对子节点进行其它操作...
}