关于JAVA从xml文件中读取数据的问题

现在要做一个作业,在主界面中有些数据,老师要求把那些数据写在一个新的xml文件中,但是同时要求这个xml文件不能在当前的程序中,就是要从外部读取这个数据,我JAVA编程的... 现在要做一个作业,在主界面中有些数据,老师要求把那些数据写在一个新的xml文件中,但是同时要求这个xml文件不能在当前的程序中,就是要从外部读取这个数据,我JAVA编程的经验很有限,迄今为止只做过一两个小程序,这个一下把我难住了,希望有JAVA高手能详细的帮我解答一下,如果可以的话,加个qq,希望以后也能请教!非常感谢!qq:137847252 展开
 我来答
数元斋
2013-04-03
知道答主
回答量:29
采纳率:0%
帮助的人:6.7万
展开全部
package com.atom.util;

import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

import com.atom.basic.columntree.ColumnTree;
import com.atom.biz.base.calendar.bean.CalenderNode;
import com.atom.biz.base.setup.BaseSetupNode;

/**
* <p>
* 操作xml文件类
* </p>
* xml 文件格式为
*
* <tables><table><col name="" value="" /><col name="" value="" /></table><table></table></tables>
*
* @author KHT * @version $Id: XmlUtil.java,v 0.1 2009-2-22 下午10:49:02 */

public class XmlUtil {

/**
* <p>
* 读取数据的xml文件
* </p>
*
* @author Jack Zhou
* @version $Id: XmlUtil.java, */
@SuppressWarnings("unchecked")
public static List<BaseSetupNode> readBaseNodes(String path) {
List<BaseSetupNode> list = new ArrayList<BaseSetupNode>();
SAXReader reader = new SAXReader();
Document doc = null;
String leaf = "";
try {
// 读取文件
File in = new File(path);
doc = reader.read(in);
Element root = doc.getRootElement();
List<Element> eles = root.elements("nodes");
List<Element> cols = null;
for (Element ele : eles) {
cols = ele.elements();
for (Element element : cols) {
BaseSetupNode node = new BaseSetupNode();
node.setFz(element.attributeValue("fz"));
node.setMc(element.attributeValue("mc"));
node.setSm(element.attributeValue("sm"));
leaf = element.attributeValue("leaf");
node.setUiProvider("col");
node.setId(element.attributeValue("id"));
node.setParentId(element.attributeValue("parantid"));
node.setHref(element.attributeValue("href"));
if ("".equals(leaf) || "0".equals(leaf)) {
node.setLeaf(false);
node.setIconCls("task");
} else {
node.setLeaf(true);
node.setIconCls("task-folder");
}
list.add(node);
}
}
} catch (DocumentException e) {
e.printStackTrace();
}
return list;
}

public static List<CalenderNode> readCalenderNodes(String path) {
List<CalenderNode> list = new ArrayList<CalenderNode>();
SAXReader reader = new SAXReader();
Document doc = null;
String leaf = "";
try {
// 读取文件
File in = new File(path);
doc = reader.read(in);
Element root = doc.getRootElement();
List<Element> eles = root.elements("nodes");
List<Element> cols = null;
String isv = "";
for (Element ele : eles) {
cols = ele.elements();
for (Element element : cols) {
CalenderNode node = new CalenderNode();
node.setDateType(element.attributeValue("dateType"));
node.setDateName(element.attributeValue("dateName"));
node.setDate(element.attributeValue("date"));
node.setMemo(element.attributeValue("memo"));
isv = element.attributeValue("visible");
if (!StringUtil.isEmpty(isv))
node
.setVisible("<img src='/public/images/Checkmark4.gif' />");
else
node.setVisible("-");
leaf = element.attributeValue("leaf");
node.setUiProvider("col");
node.setId(element.attributeValue("id"));
node.setParentId(element.attributeValue("parantid"));
node.setHref(element.attributeValue("href"));
if ("".equals(leaf) || "0".equals(leaf)) {
node.setLeaf(false);
node.setIconCls("task");
} else {
node.setLeaf(true);
node.setIconCls("task-folder");
}
list.add(node);
}
}
} catch (DocumentException e) {
e.printStackTrace();
}
return list;
}

@SuppressWarnings("unchecked")
public List<Map<String, String>> readMapTest() {
List<Map<String, String>> list = new ArrayList<Map<String, String>>();
String path = this.getClass().getResource("/").getPath()
+ "/xml/test.xml";
SAXReader reader = new SAXReader();
Document doc = null;
try {
// 读取文件
File in = new File(path);
doc = reader.read(in);
Element root = doc.getRootElement();
List<Element> eles = root.elements("nodes");
List<Element> cols = null;
for (Element ele : eles) {
cols = ele.elements();
for (Element element : cols) {
Map<String, String> map = new HashMap<String, String>();
map.put("childrows", element.attributeValue("childrows"));
map.put("hc0", element.attributeValue("hc0"));
map.put("hc1", element.attributeValue("hc1"));
map.put("hc2", element.attributeValue("hc2"));
map.put("hc3", element.attributeValue("hc3"));
map.put("hasnote", element.attributeValue("hasnote"));
map.put("urid", element.attributeValue("urid"));
map.put("entityid", element.attributeValue("entityid"));
map.put("bankid", element.attributeValue("bankid"));
list.add(map);
}
}
} catch (DocumentException e) {
e.printStackTrace();
}
return list;
}

public static void main(String[] args) {
XmlUtil xml = new XmlUtil();
String path = xml.getClass().getResource("/").getPath();
List<BaseSetupNode> nodes = XmlUtil.readBaseNodes(path
+ "/xml/base.xml");
ColumnTree t = new ColumnTree();
System.out.println(t.getJsonString(nodes));
// System.out.println(nodes.size());
// System.out.println(path);

}

}
追问
也谢谢你了,不过我有点菜,看不太懂OTZ
一起渔职场
2013-04-03 · TA获得超过208个赞
知道小有建树答主
回答量:303
采纳率:0%
帮助的人:119万
展开全部
1.xml文件的位置不是重点,就一个路径的事,只要路径取正确能读到文件就可以
2.你要会dom4j ,用这个jar提供的方法去操作xml
其他的就没有什么问题了
更多追问追答
追问
就是在外部创建一个xml文件,然后利用dom4j来解析xml文件就可以了是吗?
追答

xml文件的位置在那里其实都是可以的,因为我们可以通过相对路径 或者绝对路径来定位它的位置,那么我们的io流就可以读取到了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式