怎样用DOM4J解析一个XML文件并且将数据保存在一个List里面

怎样用DOM4J解析一个XML文件并且将数据保存在一个List里面,第1张

给个群殴前段时间写过的吧 用之前导入dom4j包什么的 自己弄把
newsForm是一个javabean 这个不用管
String xmlurl=thisgetServletContext()getRealPath("/newsxml");
File file=new File(xmlurl);
Document document=null;
List list=null;
if(fileexists()){
SAXReader reader=new SAXReader();
try {
document=readerread(file);
Element news=documentgetRootElement();
List allnews=newselements("anews");
if(allnewssize()>0){
list=new ArrayList();
for(int i=allnewssize();i>0;i--){
Element anews=(Element) allnewsget(i-1);
newsForm f=new newsForm();

fsetId(IntegerparseInt(anewsattributeValue("id")));
fsetTittle(anewselementText("tittle"));
fsetPubdate(anewselementText("pubdate"));
fsetContent(anewselementText("content"));
listadd(f);
//Systemoutprint(fgetId());
}
}
} catch (DocumentException e) {
// TODO Auto-generated catch block
eprintStackTrace();
}
finally {
documentclearContent();
}

用:
DocumentBuilderFactory factory = DocumentBuilderFactorynewInstance();
Document doc = factorynewDocumentBuilder()parse(new ByteArrayInputStream(xmlStrgetBytes()));
试试。

dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的。dom4j是一个非常非常优秀的Java XML API,具有性能优异、功能强大和极端易用使用的特点,同时它也是一个开放源代码的软件,可以在SourceForge上找到它。在IBM developerWorks上面可以找到一篇文章,对主流的Java XML API进行的性能、功能和易用性的评测,dom4j无论在那个方面都是非常出色的。我早在将近两年之前就开始使用dom4j,直到现在。如今你可以看到越来越多的Java软件都在使用dom4j来读写XML,特别值得一提的是连Sun的JAXM也在用dom4j。这是必须使用的jar包,Hibernate用它来读写配置文件。
本文来自CSDN博客,转载请标明出处:>可以参考 :
package comzuxiadom4j;
import javaioFile;
import javaioFileOutputStream;
import javautilIterator;
import javautilList;
import javautilScanner;
import orgdom4jDocument;
import orgdom4jElement;
import orgdom4jioOutputFormat;
import orgdom4jioSAXReader;
import orgdom4jioXMLWriter;
/

使用dom4j解析xml

1 创建解析器

2 创建文档对象Document

3 获取根节点

/
public class Dom4jParseXML {
public static void main(String[] args) {

//1 创建解析器
SAXReader saxreader = new SAXReader();

Document doc = null;
try {
//2 创建文档对象Document
doc = saxreaderread(new File("src/studentinfoxml"));
} catch (Exception e) {
Systemoutprintln("读取xml文件异常!");
}

//3 获取根节点
Element root = docgetRootElement();

//4 获取元素
Iterator<Element> iter = rootelementIterator();

while(iterhasNext()){

Element student = iternext();

Systemoutprintln("学号:"+studentattributeValue("stuno")+"\t姓名:"+studentelementText("name"));
}

//提示用户添加新的数据
Scanner sc = new Scanner(Systemin);
Systemoutprintln("请输入学号:");
String stuno = scnextLine();

Systemoutprintln("请输入姓名:");
String name = scnextLine();

Systemoutprintln("请输入年龄:");
String age = scnextLine();

//将数据添加在Document中
Element student = rootaddElement("student");
studentaddAttribute("stuno", stuno);
studentaddElement("name")addText(name);
studentaddElement("age")addText(age);

//3 设置格式
OutputFormat format = OutputFormatcreateCompactFormat();
formatsetIndentSize(4);
formatsetNewlines(true);

try {
//4 保存xml文件
XMLWriter out = new XMLWriter(new FileOutputStream("src/studentinfoxml"),format);

outwrite(doc);

Systemoutprintln("ok!!!");

} catch (Exception e) {
Systemoutprintln("失败!");
}
Systemoutprintln("完成了!");
}

}

以下是曾经写的一个解析XML获取XML中流的字符串,获取并转化为的工具类

里面海带哟base64编码,具体代码如下,希望能帮到你

package comasidelwebutil;
import javaioFile;
import javaioFileOutputStream;
import javaioOutputStream;
import javautilIterator;
import javautilList;
import orgdom4jDocument;
import orgdom4jDocumentHelper;
import orgdom4jElement;
import sunmiscBASE64Decoder;
import sunmiscBASE64Encoder;
import comdragonsoftadapterAdapterSend;
public class XMLparserUtil {
/
  @Title: getXp
  @Description: 解析XML
  @return 
 /
public static String getXp(String xmlStr,String sfzh) {
String xp = "";
try {
// 将String转化成xml
Document document = DocumentHelperparseText(xmlStr);
// 获取Value节点下的Row子节点
List RowElementList = XMLparserUtilgetRowElementList(document);
if (RowElementList != null && RowElementListsize() > 0) {
Element RowElement3 = (Element) RowElementListget(RowElementListsize() - 1);
// 根据节点获取值
String xpBase64 = RowElement3elementTextTrim("Data");
// Systemoutprintln("xpBase64:" + xpBase64);
if (!""equals(xpBase64) && xpBase64 != null) {
xp = XMLparserUtilgetDecodingBASE64(xpBase64, sfzh);
}
// Systemoutprintln("xp:" + xp);
}
} catch (Exception e) {
// TODO Auto-generated catch block
eprintStackTrace();
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 = base64Encoderencode(stringgetBytes());
} catch (Exception e) {
// TODO: handle exception
eprintStackTrace();
}
}
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 = decoderdecodeBuffer(imgStr);
for (int i = 0; i < blength; ++i) {
if (b[i] < 0) {// 调整异常数据
b[i] += 256;
}
}
// 生成jpeg
PathUtil pathUtil = new PathUtil();
String zdryxppath = pathUtilgetWebRoot()+"uploadImages/";
Systemoutprintln("zdryxppath="+zdryxppath);
File pathDir = new File(zdryxppath);// 如果目录不存在就创建该目录
if (!pathDirexists()) {
pathDirmkdirs();
}
String imgFileRealPath = zdryxppath + imgName + "jpg";// 新生成的
OutputStream out = new FileOutputStream(imgFileRealPath);
outwrite(b);
outflush();
outclose();
imgFilePath = "uploadImages/" + imgName + "jpg";
} catch (Exception e) {
eprintStackTrace();
}
}
return imgFilePath;
}
/
  @Title: getRowElementList
  @Description: 获取节点列表
  @param document
  @param string
  @return 
  
 /
public static List getRowElementList(Document document) {
List returnRowElementList = null;
// 获取根节点
Element rootElement = documentgetRootElement();
// Systemoutprintln("rootElement:"+rootElement);
// 获取根节点下的Method子节点
Iterator MethodElementList = rootElementelementIterator("Method");
// 遍历Method节点
while (MethodElementListhasNext()) {
Element MethodElement = (Element) MethodElementListnext();
// Systemoutprintln("Method:"+MethodElement);
// 获取Method节点下的Items子节点
Iterator ItemsElementList = MethodElementelementIterator("Items");
// 遍历Items节点
while (ItemsElementListhasNext()) {
Element ItemsElement = (Element) ItemsElementListnext();
// Systemoutprintln("Items:"+ItemsElement);
// 获取Items节点下的Item子节点
Iterator ItemElementList = ItemsElementelementIterator("Item");
// 遍历Item节点
while (ItemElementListhasNext()) {
Element ItemElement = (Element) ItemElementListnext();
// Systemoutprintln("Item:"+ItemElement);
// 获取Item节点下的Value子节点
Iterator ValueElementList = ItemElementelementIterator("Value");
// 遍历Value节点
while (ValueElementListhasNext()) {
Element ValueElement = (Element) ValueElementListnext();
// Systemoutprintln("Value:"+ValueElement);
returnRowElementList = ValueElementelements("Row");
// // 获取Value节点下的Row子节点
// List
// if (RowElementList != null && RowElementListsize() >
// 0) {
// Element RowElement3 = (Element)
// RowElementListget(RowElementListsize() - 1);
// // Systemoutprintln("Row:"+RowElement3);
// // 根据节点获取值
// xp = RowElement3elementTextTrim("Data");
// Systemoutprintln("xp:" + xp);
// }
}
}
}
}
return returnRowElementList;
}
public static void main(String[] args) {}
}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13378573.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-24
下一篇 2023-07-24

发表评论

登录后才能评论

评论列表(0条)

保存