3条回答 默认 最新
关注
1.xml运用
ClassLoader cl = ReadAndWrite.class.getClassLoader();
URL url = cl.getResource("User.xml");
String f = url.getPath();
SAXReader reader = new SAXReader();
Document doc = null;
doc = reader.read(f);
//获得根节点
Element root = doc.getRootElement();
@SuppressWarnings("rawtypes")
//迭代器
Iterator iter = root.elementIterator();
while(iter.hasNext()){
//获取子元素
Element element = (Element)iter.next();
String mail1 = element.elementText("mail");
System.out.println("qwerqwrwer");
if(mail.equals(mail1)){
request.getSession().setAttribute("judge","false");
System.out.println("niahaiao");//response.sendRedirect=把地址发送到浏览器端,让浏览器再请求,这是地址栏变的原因 request.getRequestDispatcher().forward=服务端的控制权转向,等于从一个servletClass跳到另一个servletClass或jsp继续运行,最后才返回所有的结果,所以地址栏不会变 request.getRequestDispatcher("Work1_2.jsp").forward(request,response); } } request.getSession().setAttribute("judge","true"); request.getRequestDispatcher("Work1_3.jsp").forward(request,response); } catch (Exception e) { e.getMessage(); }
2.创建xml
Document document = DocumentHelper.createDocument();//锭以根节点 Element users = document.addElement("users"); //定义子节点 Element user = users.addElement("user"); Element na = user.addElement("name"); Element mgrade = user.addElement("mgrade"); Element egrade = user.addElement("egrade"); //给子节点赋值 na.setText(name); mgrade.setText(math); egrade.setText(english); //设置输出格式 OutputFormat format = OutputFormat.createPrettyPrint(); format.setEncoding("UTF-8"); XMLWriter writer = new XMLWriter(new FileOutputStream(new File("D:/users.xml")),format); writer.write(document); writer.close(); }catch (Exception e) { e.printStackTrace(); }
3.添加xml节点(文件路径要写绝对路径 不然不行 我也不知道嘛回事)
String name = request.getParameter("name");
String math = request.getParameter("math");
String english = request.getParameter("english");
try{
SAXReader reader = new SAXReader();
Document doc = reader.read(new File("D:/java Web 程序/jsj_3_20153697_5/src/Users.xml"));
//获得根节点
Element root = doc.getRootElement();
//定义子节点
Element user = root.addElement("user");
Element na = user.addElement("name");
na.setText(name);
Element mgrade = user.addElement("mgrade");
mgrade.setText(math);
Element egrade = user.addElement("egrade");
egrade.setText(english);
//设置输出格式
OutputFormat format = new OutputFormat(" ", true, "utf-8");
XMLWriter writer = new XMLWriter(new FileOutputStream("D:/java Web 程序/jsj_3_20153697_5/src/Users.xml"), format);
writer.write(doc);
writer.close();
}catch (Exception e) {
e.printStackTrace();
}3.修改XML
request.setCharacterEncoding("UTF-8");
String name = request.getParameter("name");
String math = request.getParameter("math");
String eng = request.getParameter("english");
try {
SAXReader reader = new SAXReader();
Document doc = reader.read(new File("D:/java Web 程序/jsj_3_20153697_5/src/Users.xml"));
// 获得根节点
Element root = doc.getRootElement();
// 得到根节点的下的user节点列表
@SuppressWarnings("rawtypes")
List user = root.selectNodes("user");
@SuppressWarnings("rawtypes")
//迭代器
Iterator iter = user.iterator();
while (iter.hasNext()) {
// 获取该列表种的下一个元素 必须要有next() 不然会死循环
Element e = (Element) iter.next();//第一次执行此语句为获得第一个列表中的节点
String name1 = e.elementText("name");
if (name.equals(name1)) {
@SuppressWarnings("rawtypes")
//获取user(子)节点下的所有的子节点的综合
Iterator iter1 = e.elementIterator();
int i = 1;
while (iter1.hasNext()) {
//获取user下的单个节点 next()必须!!!!!!
Element element2 = (Element) iter1.next();
if (i == 2) {
element2.setText(math);
}
if(i == 3){
element2.setText(eng);
}
i++;
}
}
}
OutputFormat format = new OutputFormat("", true, "utf-8");
XMLWriter writer = new XMLWriter(new FileOutputStream("D:/java Web 程序/jsj_3_20153697_5/src/Users.xml"),format);
writer.write(doc);
writer.close();
response.sendRedirect("Work2_1.jsp");希望能帮到你
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报