下面是对xml实现CRUD的实例
JaxpXMLUtil.java
package
com.braden.util;
import java.io.File;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class JaxpXMLUtil {
String path = "" ;
public JaxpXMLUtil(String path) {
this .path = path;
}
public Document getDocument() {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder;
Document document = null ;
try {
builder = factory.newDocumentBuilder();
document = builder.parse(path);
} catch (Exception e) {
throw new RuntimeException(e);
}
return document;
}
public boolean writeToXml(Document document, String path) {
boolean flag = false ;
TransformerFactory tFactory = TransformerFactory.newInstance();
try {
Transformer tf = tFactory.newTransformer();
if (path != null && path != "" ) {
tf.transform(new DOMSource(document), new StreamResult(
new File(path)));
flag = true ;
} else {
flag = false ;
}
} catch (Exception e) {
throw new RuntimeException(e);
}
return flag;
}
public String getId() {
Document document = this .getDocument();
NodeList list = document.getDocumentElement().getChildNodes();
int id = 1 ;
if (list != null ) {
int len = list.getLength();
for (int i = 0 ; i < len; i ++ ) {
Node node = list.item(i);
if (node.getNodeType() == Node.ELEMENT_NODE) {
id ++ ;
}
}
}
return id + "" ;
}
}
import java.io.File;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class JaxpXMLUtil {
String path = "" ;
public JaxpXMLUtil(String path) {
this .path = path;
}
public Document getDocument() {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder;
Document document = null ;
try {
builder = factory.newDocumentBuilder();
document = builder.parse(path);
} catch (Exception e) {
throw new RuntimeException(e);
}
return document;
}
public boolean writeToXml(Document document, String path) {
boolean flag = false ;
TransformerFactory tFactory = TransformerFactory.newInstance();
try {
Transformer tf = tFactory.newTransformer();
if (path != null && path != "" ) {
tf.transform(new DOMSource(document), new StreamResult(
new File(path)));
flag = true ;
} else {
flag = false ;
}
} catch (Exception e) {
throw new RuntimeException(e);
}
return flag;
}
public String getId() {
Document document = this .getDocument();
NodeList list = document.getDocumentElement().getChildNodes();
int id = 1 ;
if (list != null ) {
int len = list.getLength();
for (int i = 0 ; i < len; i ++ ) {
Node node = list.item(i);
if (node.getNodeType() == Node.ELEMENT_NODE) {
id ++ ;
}
}
}
return id + "" ;
}
}
UserDaoImpl.java
package com.braden.impl;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import com.braden.dao.UserDao;
import com.braden.domain.User;
import com.braden.util.JaxpXMLUtil;
public
class UserDaoImpl
implements UserDao { JaxpXMLUtil util =
null;
public UserDaoImpl() { util =
new JaxpXMLUtil("src/user.xml"); }
public
boolean delete(String id) {
boolean flag =
false; Document document = util.getDocument(); NodeList user_list = document.getElementsByTagName("user");
for (
int i = 0; i < user_list.getLength(); i++) { Element e = (Element) user_list.item(i);
if (e.getAttribute("id").equals(id)) { Node node = user_list.item(i); e.getParentNode().removeChild(node); util.writeToXml(document, "src/user.xml"); flag =
true; } }
return flag; }
public User find(String id) { Document document = util.getDocument(); NodeList user_list = document.getElementsByTagName("user"); User user =
null;
for (
int i = 0; i < user_list.getLength(); i++) { Element e = (Element) user_list.item(i);
if (e.getAttribute("id").equals(id)) { user =
new User(); Node addressNode = e.getElementsByTagName("address").item(0); Node bitthdayNode = e.getElementsByTagName("bitthday").item(0); Node genderNode = e.getElementsByTagName("gender").item(0); Node usernameNode = e.getElementsByTagName("username").item(0); Node passwordNode = e.getElementsByTagName("password").item(0); user.setAddress(addressNode.getTextContent()); user.setBitthday(bitthdayNode.getTextContent()); user.setGender(genderNode.getTextContent()); user.setUsername(usernameNode.getTextContent()); user.setPassword(passwordNode.getTextContent());
break ; } }
return user; }
public
boolean update(String id, String updateitem, String updateinfo) {
boolean flag =
false; Document document = util.getDocument(); NodeList user_list = document.getElementsByTagName("user");
for (
int i = 0; i < user_list.getLength(); i++) { Element e = (Element) user_list.item(i);
if (e.getAttribute("id").equals(id)) { NodeList user_child_List = e.getChildNodes();
for (
int j = 0; j < user_child_List.getLength(); j++) { Node node_item = user_child_List.item(j);
if (node_item.getNodeName().equals(updateitem)) {
if (!node_item.getTextContent().equals(updateinfo)) { node_item.setTextContent(updateinfo); util.writeToXml(document, "src/user.xml"); flag =
true; } } } } }
return flag; }
public
boolean insert(User user) { Document document = util.getDocument();
/*
System.out.println(document.getDocumentURI());
*/ Element node_user = document.createElement("user"); node_user.setAttribute("id", user.getId()); Element node_username = document.createElement("username"); node_username.setTextContent(user.getUsername()); Element node_id = document.createElement("id"); node_id.setTextContent(user.getId()); Element node_gender = document.createElement("gender"); node_gender.setTextContent(user.getGender()); Element node_password = document.createElement("password"); node_password.setTextContent(user.getPassword()); Element node_bitthday = document.createElement("bitthday"); node_bitthday.setTextContent(user.getBitthday()); Element node_address = document.createElement("address"); node_address.setTextContent(user.getAddress()); node_user.appendChild(node_username); node_user.appendChild(node_bitthday); node_user.appendChild(node_address); node_user.appendChild(node_gender); node_user.appendChild(node_password); document.getDocumentElement().appendChild(node_user);
try { util.writeToXml(document, "src/user.xml");
return
true; }
catch (Exception e) {
throw
new RuntimeException(e); } } }
UserDaoImplTest.java
package com.braden.junit; import java.io.IOException; import javax.xml.parsers.ParserConfigurationException; import org.junit.After; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; import org.xml.sax.SAXException; import com.braden.dao.UserDao; import com.braden.domain.User; import com.braden.impl.UserDaoImpl; import com.braden.util.JaxpXMLUtil; public class UserDaoImplTest { static UserDao dao; static JaxpXMLUtil util; @BeforeClass public static void setUpBeforeClass() throws Exception { dao = new UserDaoImpl(); util = new JaxpXMLUtil("src/user.xml"); } @AfterClass public static void tearDownAfterClass() throws Exception { } @Before public void setUp() throws Exception { } @After public void tearDown() throws Exception { } @Test public void testDelete() { if (dao.delete("2")) { System.out.println("删除成功"); } else { System.out.println("删除失败"); } } @Test public void testFind() { User user = dao.find("2"); if (user!=null) { System.out.println(user.getPassword()); } else { System.out.println("用户不存在"); } } @Test public void testUpdate() { if(dao.update("2", "password","lina")) { System.out.println("更新成功"); } else { System.out.println("更新失败"); } } @Test public void testInsert() throws SAXException, IOException, ParserConfigurationException { String id =util.getId(); User user = new User(); user.setAddress("beijing"+id+"beijing"); user.setBitthday("1984-09-03"); user.setId(id); user.setUsername("braden_"+id); user.setGender("female"); user.setPassword("123456"); try { dao.insert(user); System.out.println("user" + user.getId()+"添加成功!"); } catch (Exception e) { throw new RuntimeException(e); } } }
User.java
package
com.braden.domain; public
class
User { private
String username; private
String id; private
String bitthday; private
String address; private
String gender; private
String password; public
User() { super
(); } public
User(String username, String id, String bitthday, String address, String gender, String password) { super
(); this
.username
=
username; this
.id
=
id; this
.bitthday
=
bitthday; this
.address
=
address; this
.gender
=
gender; this
.password
=
password; } public
String getUsername() { return
username; } public
void
setUsername(String username) { this
.username
=
username; } public
String getId() { return
id; } public
void
setId(String id) { this
.id
=
id; } public
String getBitthday() { return
bitthday; } public
void
setBitthday(String bitthday) { this
.bitthday
=
bitthday; } public
String getAddress() { return
address; } public
void
setAddress(String address) { this
.address
=
address; } public
String getGender() { return
gender; } public
void
setGender(String gender) { this
.gender
=
gender; } public
String getPassword() { return
password; } public
void
setPassword(String password) { this
.password
=
password; } }
得到的xml文件
<?
xml version="1.0" encoding="UTF-8" standalone="no"
?>
<!--
<!DOCTYPE user PUBLIC "//UNKNOWN/" "user.dtd">
-->
<
users
>
<
user
id
="1"
>
<
username
>braden_1
</
username
>
<
bitthday
>1984-09-03
</
bitthday
>
<
address
>beijing1beijing
</
address
>
<
gender
>female
</
gender
>
<
password
>123456
</
password
>
</
user
>
<
user
id
="2"
>
<
username
>braden_2
</
username
>
<
bitthday
>1984-09-03
</
bitthday
>
<
address
>beijing2beijing
</
address
>
<
gender
>female
</
gender
>
<
password
>123456
</
password
>
</
user
>
<
user
id
="3"
>
<
username
>braden_3
</
username
>
<
bitthday
>1984-09-03
</
bitthday
>
<
address
>beijing3beijing
</
address
>
<
gender
>female
</
gender
>
<
password
>123456
</
password
>
</
user
>
</
users
>