xml——JAXP解析

          JAXP,即Sun 的 Java API for XML ,是Sun推出操作XML的一套API,所有 parser 器類作為 com.sun.xml.parser 包.

          image位于API文檔的javax.xml.parsers包中,如圖所示:

          重要的DocumentBuilderFactory XML解析工廠,靜態newInstance方法可得到一個

          工廠示例,通過實例調用newDocumentBuilder可得到文檔解析器DocumentBuilder的實例

          解析器通過parse方法得到Document 對象。Document 對象操作完成之后寫入到xml文件是

          image需要用到另外的幾個包 ,如左圖所示:

          通過TransformerFactory 調用newInstance得到一個工廠實例,工廠實例調用newTransformer

          得到轉換器,然后調用該轉換器的transform方法可將Document 對象寫入到xml文件

          下面是對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+"";
              }
          }

          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 "http://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>

          posted on 2010-04-22 22:15 braden 閱讀(1632) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          <2010年4月>
          28293031123
          45678910
          11121314151617
          18192021222324
          2526272829301
          2345678

          導航

          統計

          常用鏈接

          留言簿(1)

          隨筆檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 奉新县| 文昌市| 伊金霍洛旗| 衡水市| 柘荣县| 临安市| 侯马市| 长垣县| 大兴区| 彩票| 宁国市| 靖安县| 望江县| 仙居县| 泌阳县| 金寨县| 云和县| 根河市| 多伦县| 威信县| 老河口市| 沾化县| 宁波市| 定结县| 贵溪市| 鄂托克前旗| 上林县| 延边| 沙洋县| 黔东| 资溪县| 赞皇县| 莱阳市| 汉源县| 洮南市| 丹东市| 开化县| 绥芬河市| 淄博市| 安徽省| 长春市|