您的位置:首页 > 其它

dom解析xml小例子

2011-11-30 15:23 197 查看
初次学习用dom操作xml文件,有很多不足之处,牛人多给点建议,练习时我没对中文做乱码处理,也没做验证哦!O(∩_∩)O~

实体类:User

public class User {

private String name;

private String pwd;

private String email;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getPwd() {

return pwd;

}

public void setPwd(String pwd) {

this.pwd = pwd;

}

public String getEmail() {

return email;

}

public void setEmail(String email) {

this.email = email;

}

}

数据访问层接口:UserDao

public interface UserDao {

boolean login(String name, String pwd);

void insertUser(User user);

List<User> selectUser();

void updateUser(User user);

boolean deleteUser(String name);

public User findByName(String name);

}

接口实现类:UserDaoImpl

public class UserDaoImpl implements UserDao {

private static final String PATH="xml文件路径";

private void build(Document dom) {

try {

//定义转换器

Transformer f = TransformerFactory.newInstance().newTransformer();

//设置输出的编码格式

f.setOutputProperty(OutputKeys.ENCODING, "UTF-8");

//构建dom源

DOMSource source = new DOMSource(dom);

//指定文件存放的目标路劲

StreamResult sr = new StreamResult(new File(PATH));

//执行转换操作

f.transform(source, sr);

} catch (Exception e) {

e.printStackTrace();

}

}

//登陆

public boolean login(String name, String pwd) {

boolean flag = false;

try {

//根据以有的xml文件创建Document对象

Document dom = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new File(PATH));

//获取user节点下的子节点

NodeList list = dom.getElementsByTagName("user");

//遍历list,数据匹配退出

for(int i = 0; i<list.getLength(); i++) {

Element el = (Element)list.item(i);

if(name.equals(el.getAttribute("name")) && pwd.equals(el.getAttribute("pwd"))) {

flag = true;

break;

}

}

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return flag;

}

//添加操作

public void insertUser(User user) {

try {

//创建全新的Document对象

Document dom = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();

//创建根节点users

Element el = dom.createElement("users");

//将根节点添加到dom中

dom.appendChild(el);

//创建子节点

Element e2 = dom.createElement("user");

//将子节点添加到根节点中

el.appendChild(e2);

//取得xml文件中现有的信息

List<User> users = this.selectUser();

for(int i = 0; i < users.size(); i++){

//创建节点user

Element el3 = dom.createElement("user");

User us =users.get(i);

//设置节点的属性(name,pwd,email)

el3.setAttribute("name", us.getName());

el3.setAttribute("pwd", us.getPwd());

el3.setAttribute("email", us.getEmail());

//添加到根节点中

el.appendChild(el3);

}

e2.setAttribute("name", user.getName());

e2.setAttribute("pwd", user.getPwd());

e2.setAttribute("email", user.getEmail());

build(dom);

} catch (ParserConfigurationException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

//查询操作

public List<User> selectUser() {

List<User> userList = new ArrayList<User>();

try {

//根据已有的xml文件创建dom

Document dom = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new File(PATH));

//获取所有user节点下的子节点

NodeList list = dom.getElementsByTagName("user");

for(int i = 0;i <list.getLength();i++){

User user =new User();

Element element = (Element)list.item(i);

user.setName(element.getAttribute("name"));

user.setPwd(element.getAttribute("pwd"));

user.setEmail(element.getAttribute("email"));

userList.add(user);

}

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return userList;

}

//修改操作

public void updateUser(User user) {

try {

//根据以有的xml文件创建dom

Document dom = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new File(PATH));

//获取user节点下的子节点

NodeList list = dom.getElementsByTagName("user");

//遍历list

for(int i = 0;i < list.getLength();i++) {

Element el = (Element)list.item(i);

//根据name属性去修改

if(user.getName().equals(el.getAttribute("name"))) {

el.setAttribute("pwd", user.getPwd());

el.setAttribute("email", user.getEmail());

build(dom);

}

}

} catch (SAXException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (ParserConfigurationException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

//删除操作

public boolean deleteUser(String name) {

try {

//根据以有xml文件创建domcumet对象

Document dom = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new File(PATH));

//获取user节点下的子节点

NodeList list = dom.getElementsByTagName("user");

//遍历list

for(int i=0;i<list.getLength();i++) {

Element el = (Element)list.item(i);

if(name.equals(el.getAttribute("name"))) {

el.getParentNode().removeChild(el);

build(dom);

return true;

}

}

} catch (Exception e) {

// TODO: handle exception

}

return false;

}

//根据name查找

public User findByName(String name) {

User user = new User();

try {

//根据以后的xml文件创建document对象

Document dom = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new File(PATH));

//获取user节点下的子节点集合

NodeList list = dom.getElementsByTagName("user");

for(int i=0;i<list.getLength();i++) {

Element el = (Element)list.item(i);

if(name.equals(el.getAttribute("name"))) {

user.setName(el.getAttribute("name"));

user.setPwd(el.getAttribute("pwd"));

user.setEmail(el.getAttribute("email"));

break;

}

}

} catch (Exception e) {

e.printStackTrace();

}

return user;

}

}

业务逻辑层接口:UserService

boolean login(String name, String pwd);

void insertUser(User user);

List<User> selectUser();

void updateUser(User user);

boolean deleteUser(String name);

public User findByName(String name);

接口实现类:UserServiceImpl

public class UserServiceImpl implements UserService {

UserDao dao = new UserDaoImpl();

public boolean login(String name, String pwd) {

return dao.login(name, pwd);

}

public void insertUser(User user) {

dao.insertUser(user);

}

public List<User> selectUser() {

return dao.selectUser();

}

public void updateUser(User user) {

dao.updateUser(user);

}

public boolean deleteUser(String name) {

return dao.deleteUser(name);

}

public User findByName(String name) {

return dao.findByName(name);

}

}

控制层:UserAction

public class UserAction extends ActionSupport{

private User user;

public User getUser() {

return user;

}

public void setUser(User user) {

this.user = user;

}

UserService userService = new UserServiceImpl();

public String selectUser(){

HttpServletRequest request = ServletActionContext.getRequest();

List<User> users = new ArrayList<User>();

users = userService.selectUser();

request.setAttribute("USER", users);

return "select";

}

/**

* 登陆

* @return

*/

public String login(){

if(user.getName() != null && user.getPwd() != null) {

boolean flag = userService.login(user.getName(), user.getPwd());

if(flag) {

return SUCCESS;

}

}

return ERROR;

}

/**

* 修改

* @return

*/

public String update(){

userService.updateUser(user);

return "update";

}

/**

* 编辑

* @return

*/

public String edit(){

HttpServletRequest request = ServletActionContext.getRequest();

String name = request.getParameter("uName");

if(name != null) {

User u = userService.findByName(name);

request.setAttribute("USER", u);

}

return "edit";

}

/**

* 删除

* @return

*/

public String delete(){

HttpServletRequest request = ServletActionContext.getRequest();

String name = request.getParameter("uName");

boolean flag = userService.deleteUser(name);

System.out.println(flag);

return SUCCESS;

}

/**

* 添加

* @return

*/

public String insert(){

userService.insertUser(user);

return "insert";

}

}

struts.xml配置(本人用的的struts2):

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts PUBLIC

"-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"

"http://struts.apache.org/dtds/struts-2.1.7.dtd">

<struts>

<package name="file" extends="struts-default">

<action name="list" class="com.jun.action.UserAction" method="selectUser">

<result name="select">/list.jsp</result>

</action>

<action name="login" class="com.jun.action.UserAction" method="login">

<result name="success" type="redirectAction">/list.action</result>

<result name="error">/login.jsp</result>

</action>

<action name="insert" class="com.jun.action.UserAction" method="insert">

<result name="insert" type="redirectAction">/list.action</result>

</action>

<action name="delete" class="com.jun.action.UserAction" method="delete">

<result type="redirect">/list.action</result>

</action>

<action name="update" class="com.jun.action.UserAction" method="update">

<result name="update" type="redirectAction">/list.action</result>

</action>

<action name="edit" class="com.jun.action.UserAction" method="edit">

<result name="edit">/update.jsp</result>

</action>

</package>

</struts>

web.xml配置

<?xml version="1.0" encoding="UTF-8"?>

<web-app version="2.5"

xmlns="http://java.sun.com/xml/ns/javaee"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

<welcome-file-list>

<welcome-file>index.jsp</welcome-file>

</welcome-file-list>

<filter>

<filter-name>struts2</filter-name>

<filter-class>

org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

</filter-class>

</filter>

<filter-mapping>

<filter-name>struts2</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

</web-app>

四个页面:login.jsp list.jsp insert.jsp,update.jsp

login.jsp

<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>

<%

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<base href="<%=basePath%>">

<title>My JSP 'login.jsp' starting page</title>

<meta http-equiv="pragma" content="no-cache">

<meta http-equiv="cache-control" content="no-cache">

<meta http-equiv="expires" content="0">

<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">

<meta http-equiv="description" content="This is my page">

<!--

<link rel="stylesheet" type="text/css" href="styles.css">

-->

</head>

<body>

<a href="list.action">首页</a>|<a href="insert.jsp">注册</a>

<form action="login.action" method="post">

<table>

<tr>

<td> 用户名:</td><td><input name="user.name" type="text"></td>

</tr>

<tr>

<td> 密码:</td><td><input type="password" name="user.pwd"></td>

</tr>

<tr>

<td colspan="2" align="center"><input type="submit" value="登录"></td>

</tr>

</table>

</form>

</body>

</html>

list.jsp

<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>

<%@ taglib uri="/struts-tags" prefix="s"%>

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

<%

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<base href="<%=basePath%>">

<title>My JSP 'list.jsp' starting page</title>

<meta http-equiv="pragma" content="no-cache">

<meta http-equiv="cache-control" content="no-cache">

<meta http-equiv="expires" content="0">

<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">

<meta http-equiv="description" content="This is my page">

<!--

<link rel="stylesheet" type="text/css" href="styles.css">

-->

</head>

<body >

<a href="insert.jsp">注册</a>

<table border="1">

<tr>

<td align="center" colspan="6"><font size="+3">用户列表</font></td>

</tr>

<tr>

<td>序号</td><td>用户名</td><td>密码</td><td>邮箱</td><td>删除</td><td>编辑</td>

</tr>

<c:forEach items="${USER}" var="u" varStatus="temp">

<tr>

<td>${temp.index+1}</td><td>${u.name }</td><td>${u.pwd }</td><td>${u.email}</td><td><a href="delete.action?uName=${u.name}">删除</a></td><td><a href="edit.action?uName=${u.name }">编辑</a></td>

</tr>

</c:forEach>

</table>

</body>

</html>

insert.jsp

<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>

<%

String path = request.getContextPath();

String basePath = request.getScheme() + "://"

+ request.getServerName() + ":" + request.getServerPort()

+ path + "/";

%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<base href="<%=basePath%>">

<title>My JSP 'register.jsp' starting page</title>

<meta http-equiv="pragma" content="no-cache">

<meta http-equiv="cache-control" content="no-cache">

<meta http-equiv="expires" content="0">

<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">

<meta http-equiv="description" content="This is my page">

<!--

<link rel="stylesheet" type="text/css" href="styles.css">

-->

</head>

<body>

<a href="list.action">首页</a>

<form action="insert.action" method="post">

<table>

<tr>

<td>

用户名:

</td>

<td>

<input name="user.name" type="text">

</td>

</tr>

<tr>

<td>

密码:

</td>

<td>

<input type="password" name="user.pwd">

</td>

</tr>

<tr>

<td>

邮箱:

</td>

<td>

<input type="text" name="user.email">

</td>

</tr>

<tr>

<td colspan="2" align="center">

<input type="submit" value="提交">

</td>

</tr>

</table>

</form>

</body>

</html>

update.jsp

<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<%

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<base href="<%=basePath%>">

<title>My JSP 'update.jsp' starting page</title>

<meta http-equiv="pragma" content="no-cache">

<meta http-equiv="cache-control" content="no-cache">

<meta http-equiv="expires" content="0">

<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">

<meta http-equiv="description" content="This is my page">

<!--

<link rel="stylesheet" type="text/css" href="styles.css">

-->

</head>

<body>

<a href="list.action">首页</a>

<h2>更新操作</h2>

<form action="update.action" method="post">

<table>

<c:set value="${USER}" var="user"></c:set>

<tr>

<td> 用户名:</td><td><input readonly="readonly" name="user.name" value="${user.name}" type="text"></td>

</tr>

<tr>

<td> 密码:</td><td><input type="password" value="${user.pwd }" name="user.pwd"></td>

</tr>

<tr>

<td> 邮箱:</td><td><input type="text" value="${user.email }" name="user.email"></td>

</tr>

<tr>

<td colspan="2" align="center"><input type="submit" value="保存"></td>

</tr>

</table>

</form>

</body>

</html>

本人学习所用的user.xml文件

<?xml version="1.0" encoding="UTF-8"?>

<users>

<user email=aaa@sina.com name="bbb" pwd="aaaaaa"/>

<user email=bbb@sina.com name="ccc" pwd="aaaaaa"/>

</users>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: