最近做了一个读取XML文件的信息显示到浏览器上,再可以更改之后保存回XML文件中的功能,在网上查看了一些资料,勉强算完成任务,新手入门,故先记录下来,若有大佬有较好的解决方案,还望给出评论!
大概的思路是:采用jsp/servlet,dom4j进行读取xml文件完成。
dom4j使用
1、导包
2、文件加载
public Document load(File file) {
// TODO Auto-generated method stub
Document document = null;
try {
SAXReader saxReader = new SAXReader();
document = saxReader.read(file);
} catch (Exception ex) {
ex.printStackTrace();
}
return document;
}
3、读取XML文件内容
public List catDetails(Document document) {
// TODO Auto-generated method stub
List<Value> vlist=new ArrayList();
try {
//获取根节点
Element root = document.getRootElement();
//获取子元素的集合
List<Element> list=root.elements();
for(Element e:list) {
Value v=new Value();
//使用实体类接收数据
v.setNum(e.elementText("PRO"));
v.setPro(e.elementText("NUM"));
vlist.add(v);
}
}catch(Exception ex) {
ex.printStackTrace();
}finally {
return vlist;
}
}
然后获取返回的数据再显示到jsp页面中
2、保存修改后的内容,通过form表单提交修改后的内容,再写入覆盖掉源文件
public void saveToXML(List<Value> list) {
//1.创建文档
Document doc=DocumentHelper.createDocument();
//2.添加标签
Element rootElem=doc.addElement("ROOT");
for(Value v:list) {
Element stuElem=rootElem.addElement("VALUE");
Element proElem= stuElem.addElement("PRO");
Element numElem= stuElem.addElement("NUM");
proElem.addText(v.getPro());
numElem.addText(v.getNum());
}
FileOutputStream out = null;
try {
out = new FileOutputStream("D:/test.xml");
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 指定文本的写出的格式:
OutputFormat format=OutputFormat.createPrettyPrint(); //漂亮格式:有空格换行
format.setEncoding("UTF-8");
//1.创建写出对象
XMLWriter writer = null;
try {
writer = new XMLWriter(out,format);
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//2.写出Document对象
try {
writer.write(doc);
//3.关闭流
writer.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}