西西軟件下載最安全的下載網(wǎng)站、值得信賴的軟件下載站!

首頁(yè)編程開(kāi)發(fā)java → Java語(yǔ)言制作基于XML和Xpath的簡(jiǎn)易數(shù)據(jù)管理系統(tǒng)

Java語(yǔ)言制作基于XML和Xpath的簡(jiǎn)易數(shù)據(jù)管理系統(tǒng)

前往專題相關(guān)軟件相關(guān)文章發(fā)表評(píng)論 來(lái)源:西西整理時(shí)間:2013/3/4 8:27:49字體大小:A-A+

作者:烤德點(diǎn)擊:0次評(píng)論:0次標(biāo)簽: XML

  • 類型:下載工具大。828KB語(yǔ)言:中文 評(píng)分:7.5
  • 標(biāo)簽:
立即下載

一、目標(biāo)

用xml和Xapth做一個(gè)簡(jiǎn)單的數(shù)據(jù)管理系統(tǒng),對(duì)數(shù)據(jù)的進(jìn)行簡(jiǎn)單的增、刪、改、查詢操作。如做一個(gè)簡(jiǎn)單的班級(jí)學(xué)生信息管理系統(tǒng):

二、環(huán)境及開(kāi)發(fā)工具

環(huán)境:Java

工具:EcliPSe

開(kāi)發(fā)包:如圖

三、原理

dom4j是一個(gè)Java的XML API,類似于jdom,用來(lái)讀寫(xiě)XML文件的。dom4j是一個(gè)非常非常優(yōu)秀的Java XML API,具有性能優(yōu)異、功能強(qiáng)大和極端易用使用的特點(diǎn),同時(shí)它也是一個(gè)開(kāi)放源代碼的軟件,可以在SourceForge上找到它。

XPath 是一門(mén)在 XML 文檔中查找信息的語(yǔ)言。XPath 用于在 XML 文檔中通過(guò)元素和屬性進(jìn)行導(dǎo)航。XPath 使用路徑表達(dá)式在 XML 文檔中選取節(jié)點(diǎn)。節(jié)點(diǎn)是通過(guò)沿著路徑或者 step 來(lái)選取的。

用Xpath定位到相應(yīng)節(jié)點(diǎn),用dom4j進(jìn)行增、刪、改。

四,類分析,如下圖:

addframe:執(zhí)行添加操作時(shí)顯示的界面。

allfunction:對(duì)xml操作各功能的實(shí)現(xiàn)。

alterframe:執(zhí)行修改操作時(shí)顯示的界面。

deleteframe:執(zhí)行刪除操作時(shí)顯示的界面。

mainframe:主界面

queryframe:執(zhí)行查詢操作時(shí)顯示的界面。

五、主要實(shí)現(xiàn)如下:

import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;

import org.dom4j.xpath.*;

import javax.xml.parsers.ParserConfigurationException;
import javax.xml.xpath.*;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
import org.xml.sax.SAXException;

/**
 * @author ncw
 * create the function
 */
public class allfunction 
{

         /*
     * 獲取全部信息
     */
         public String getall(){
            String allinformation="";
            try
            {
            SAXReader saxReader = new SAXReader(); 
            //saxReader.setEncoding("UTF-8");
            Document document = saxReader.read(new java.io.File("manage.xml"));
            List academylist = document.selectNodes("/school/academy" );        
            for(int i=0;i<academylist.size();i++)
            {            
                Element academyElement = (Element)academylist.get(i);                
               allinformation=allinformation+academyElement.attribute("aid").getValue();              
               allinformation+=" 學(xué)院: "+"\n";
               Iterator classiterator = academyElement.elementIterator("class");
               while(classiterator.hasNext())
               {
                   Element classElement = (Element)classiterator.next();
                   allinformation+=classElement.attribute("cid").getValue();
                   allinformation+=" 班級(jí): "+"\n";
                   Iterator studentiterator = classElement.elementIterator("student");
                   while(studentiterator.hasNext())
                   {
                       Element studentElement=(Element)studentiterator.next();
                       allinformation+="姓名:";
                       allinformation+=studentElement.elementText("name");                                      
                       allinformation+="      性別:";
                       allinformation+=studentElement.elementText("sex");                                           
                       allinformation+="     年齡:";
                       allinformation+=studentElement.elementText("age");                       
                       allinformation+="     成績(jī):";
                       allinformation+=studentElement.elementText("grade");
                       allinformation+="\n";                      
                   }      
               }    
            }            
        }catch(Exception ex)
            {
                   ex.printStackTrace();
             }               
            return allinformation;
        }
/*
* 獲得一個(gè)學(xué)生的信息
*/
public String getperson(String name)
{
    String person="";
    try
    {
        SAXReader saxReader = new SAXReader(); 
        Document document = saxReader.read(new java.io.File("manage.xml"));
        List classlist = document.selectNodes("/school/academy/class" ); 
        Iterator classiterator = classlist.iterator();
        while(classiterator.hasNext())
        {
            Element classElement = (Element)classiterator.next();
               Iterator studentiterator = classElement.elementIterator("student");
               while(studentiterator.hasNext())
               {
                   Element studentElement=(Element)studentiterator.next();
                   if(studentElement.elementText("name").equals(name))
                   {
                   person+="學(xué)院:"+classElement.getParent().attributeValue("aid")+"\n";
                   person+="班級(jí):"+classElement.attributeValue("cid")+"\n";
                   person+="姓名:"+studentElement.elementText("name");
                   person+="   性別:"+studentElement.elementText("sex");
                   person+="   年齡:"+studentElement.elementText("age");
                   person+="   成績(jī):"+studentElement.elementText("grade");
                  }      
               }    
          }
    }catch(Exception ex)
    {
      ex.printStackTrace();
    }      
    return person;
}
       
 /*
* 刪除一個(gè)學(xué)生的信息     
*/         
public boolean delete(String name)
{
     boolean deleted=false;
     try
     {
           SAXReader saxReader = new SAXReader(); 
           Document document = saxReader.read(new java.io.File("manage.xml"));            
           List  classlist = document.selectNodes("/school/academy/class");
           Iterator classiterator = classlist.iterator();
           while(classiterator.hasNext())
           {
              Element classElement = (Element)classiterator.next();
              Iterator studentiterator = classElement.elementIterator("student");
              while(studentiterator.hasNext())
              {
                  Element studentElement=(Element)studentiterator.next();                 
                  if(studentElement.elementText("name").equals(name))
                  {
                     classElement.remove(studentElement);
                     deleted=true;
                  }
               }
           }
           
           try{
               /** 格式化輸出,類型IE瀏覽一樣 */
               OutputFormat format = OutputFormat.createPrettyPrint();
               /** 指定XML編碼 */
               format.setEncoding("GBK");
              /** 將document中的內(nèi)容寫(xiě)入文件中 */
//              XMLWriter writer = new XMLWriter(new FileWriter(new File(newfilename)),format);
               //保證編碼為UTF-8,支持中文寫(xiě)入
              XMLWriter writer = new XMLWriter(new FileOutputStream(new File("manage.xml")),format);
              writer.write(document);
              writer.close();
              
           }catch(Exception ex){
              ex.printStackTrace();
           }
       }catch(Exception ex)
         {
           ex.printStackTrace();
         }  
           return deleted;
}



/*
* 修改一個(gè)學(xué)生的信息
*/
public boolean alter(String aid,String cid,String name,String sex,String age,String grade)
{
    boolean altered=false;    
     try{
         /*
         aid=new String(aid.getBytes("ISO8859-1"),"UTF-8");
            cid=new String(cid.getBytes("ISO8859-1"),"UTF-8");
            name=new String(name.getBytes("ISO8859-1"),"UTF-8");
            sex=new String(sex.getBytes("ISO8859-1"),"UTF-8");
            age=new String(age.getBytes("ISO8859-1"),"UTF-8");
            grade=new String(grade.getBytes("ISO8859-1"),"UTF-8");
            */
           SAXReader saxReader = new SAXReader(); 
           Document document = saxReader.read(new java.io.File("manage.xml"));            
           List academylist = document.selectNodes("/school/academy" ); 
           Iterator academyiterator = academylist.iterator();
           while(academyiterator.hasNext())
           {
               Element academyElement = (Element) academyiterator.next();
              if(academyElement.attribute("aid").getValue().equals(aid));
              Iterator classiterator = academyElement.elementIterator("class");                           
              while(classiterator.hasNext())
              {
                  Element classElement = (Element)classiterator.next();
                if(classElement.attribute("cid").getValue().equals(cid));          
                  Iterator studentiterator = classElement.elementIterator("student");
                  while(studentiterator.hasNext())
                  {
                      Element studentElement=(Element)studentiterator.next();
                      if(studentElement.elementText("name").equals(name))
                      {
                          Element sexElement=studentElement.element("sex");
                          sexElement.setText(sex);
                          Element ageElement=studentElement.element("age");
                          ageElement.setText(age);
                          Element gradeElement=studentElement.element("grade");
                          gradeElement.setText(grade);       
                          altered=true;
                       }                                   
                  }      
               }    
           }
           
           try{
               /** 格式化輸出,類型IE瀏覽一樣 */
               OutputFormat format = OutputFormat.createPrettyPrint();
               /** 指定XML編碼 */
               format.setEncoding("GBK");
              /** 將document中的內(nèi)容寫(xiě)入文件中 */
//              XMLWriter writer = new XMLWriter(new FileWriter(new File(newfilename)),format);
               //保證編碼為UTF-8,支持中文寫(xiě)入
              XMLWriter writer = new XMLWriter(new FileOutputStream(new File("manage.xml")),format);
              writer.write(document);
              writer.close();
              
           }catch(Exception ex){
              ex.printStackTrace();
           }
           }catch(Exception ex)
           {
               ex.printStackTrace();
            }     
    return altered;
}



/*
* 添加一個(gè)學(xué)生的信息
*/
public boolean add(String aid,String cid,String name,String sex,String age,String grade)
{
        boolean add = false;
        try {
            /*
            aid=new String(aid.getBytes("ISO8859-1"),"UTF-8");
            cid=new String(cid.getBytes("ISO8859-1"),"UTF-8");
            name=new String(name.getBytes("ISO8859-1"),"UTF-8");
            sex=new String(sex.getBytes("ISO8859-1"),"UTF-8");
            age=new String(age.getBytes("ISO8859-1"),"UTF-8");
            grade=new String(grade.getBytes("ISO8859-1"),"UTF-8");
            */
            SAXReader saxReader = new SAXReader();
            Document document = saxReader.read(new java.io.File("manage.xml"));
            List academylist = document.selectNodes("/school/academy");
            Iterator academyiterator = academylist.iterator();
            while (academyiterator.hasNext()) 
            {
                Element academyElement = (Element) academyiterator.next();
                if (academyElement.attribute("aid").getValue().equals(aid)) 
                {
                    Iterator classiterator = academyElement.elementIterator("class");
                    while (classiterator.hasNext()) 
                    {
                        Element classElement = (Element) classiterator.next();
                        if (classElement.attribute("cid").getValue().equals(cid)) 
                        {
                            Element studentElement = classElement.addElement("student");
                            Element nameElement = studentElement.addElement("name");
                            nameElement.setText(name);
                            Element sexElement = studentElement.addElement("sex");
                            sexElement.setText(sex);
                            Element ageElement = studentElement.addElement("age");
                            ageElement.setText(age);
                            Element gradeElement = studentElement.addElement("grade");
                            gradeElement.setText(grade);
                            add = true;
                        }
                    }
                }
                
        }        
            try{
                   /** 格式化輸出,類型IE瀏覽一樣 */
                   OutputFormat format = OutputFormat.createPrettyPrint();
                   /** 指定XML編碼 */
                   format.setEncoding("GBK");
                  /** 將document中的內(nèi)容寫(xiě)入文件中 */
//                  XMLWriter writer = new XMLWriter(new FileWriter(new File(newfilename)),format);
                   //保證編碼為UTF-8,支持中文寫(xiě)入
                  XMLWriter writer = new XMLWriter(new FileOutputStream(new File("manage.xml")),format);
                  writer.write(document);
                  writer.close();
                  
               }catch(Exception ex){
                  ex.printStackTrace();
               }
               
           }catch(Exception ex)
           {
                  ex.printStackTrace();
              }     
    return add;
}

}

alterframe   deleteframe  mainframe   queryframe等類則實(shí)現(xiàn)相應(yīng)的界面顯示。

相應(yīng)xml結(jié)構(gòu)如下:

六:總結(jié):

   1 功能簡(jiǎn)單,操作不夠靈活

2 在對(duì)數(shù)據(jù)的讀入與存儲(chǔ)上有待改進(jìn)。

    相關(guān)評(píng)論

    閱讀本文后您有什么感想? 已有人給出評(píng)價(jià)!

    • 8 喜歡喜歡
    • 3 頂
    • 1 難過(guò)難過(guò)
    • 5 囧
    • 3 圍觀圍觀
    • 2 無(wú)聊無(wú)聊

    熱門(mén)評(píng)論

    最新評(píng)論

    發(fā)表評(píng)論 查看所有評(píng)論(0)

    昵稱:
    表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
    字?jǐn)?shù): 0/500 (您的評(píng)論需要經(jīng)過(guò)審核才能顯示)
    推薦文章

    沒(méi)有數(shù)據(jù)