⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 parsexml.java

📁 基于xml的数据库管理系统
💻 JAVA
字号:
package mydbms;
import org.w3c.dom.*; 
import javax.xml.parsers.*; 
import javax.xml.transform.*; 
import javax.xml.transform.dom.DOMSource; 
import javax.xml.transform.stream.StreamResult; 
import java.io.*; 
import java.util.*;
import javax.swing.tree.*;
import javax.swing.tree.DefaultMutableTreeNode;
/*
 * ParseXml.java
 *
 * Created on 2006年5月12日, 下午9:25
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */
public class ParseXml { 
    Document document;
    Element root;
    TransformerFactory tf;
    Transformer transformer;
    DOMSource source;
    PrintWriter pw;
    StreamResult result;
    String filepath;
    public ParseXml(String filepath)
    {
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        this.filepath=filepath;
        try
        {
            DocumentBuilder db = dbf.newDocumentBuilder();
            document = db.parse(filepath);
            root =(Element)document.getFirstChild(); 
        }
        catch(Exception e){
        }
    }
    public void toSave(){
        try{ 
                tf=TransformerFactory.newInstance(); 
		transformer=tf.newTransformer(); 
		source=new DOMSource(document); 
		transformer.setOutputProperty(OutputKeys.ENCODING,"GB2312"); 
		transformer.setOutputProperty(OutputKeys.INDENT,"yes"); 
		pw=new PrintWriter(new FileOutputStream(filepath)); 
		result=new StreamResult(pw); 
		transformer.transform(source,result); 
            } 
            catch(TransformerException mye){ 
		mye.printStackTrace(); 
            } 
            catch(IOException exp){ 
		exp.printStackTrace(); 
            } 
    }
    //创建数据库中的表
    public void insertTable(String tbname)
    {
        Element dn = document.createElement("table"); 
        dn.setAttribute("name",tbname);
	root.appendChild(dn); 
    } 
    
    //将新创建的数据库写入xml文件
    public void insertDbArray(String dbname)
    {
        Element dn = document.createElement("dbname"); 
	dn.appendChild(document.createTextNode(String.valueOf(dbname))); 
	root.appendChild(dn); 
    } 
   //删除数据库中的结点
    public void delDbTable(String tbname)
        {
            NodeList codes = document.getElementsByTagName("dbname"); 
            Node child=null;
            Node parent = null;
            int num=0;
            while(codes.item(num)!=null)
            {
                child = codes.item(num);
		if(child.getTextContent().equals(tbname))
                {
			parent = child.getParentNode();                        
			parent.removeChild(child);
		}                
                num++;
            }
        } 
    //修改数据库名称
    public void modDbTable(String newname,String oldname)
        {
            NodeList codes = document.getElementsByTagName("dbname");
            Node child=null;
            Node parent = null;
            int num=0;
            while(codes.item(num)!=null)
            {
                child = codes.item(num);
		if(child.getTextContent().equals(oldname))
                {
			child.setTextContent(newname);
                        int i=MainFrame.root.getIndex(MainFrame.sn);
                        MainFrame.treeModel.removeNodeFromParent(MainFrame.sn);                       
                        MainFrame.sn=new DefaultMutableTreeNode(newname);
                        MainFrame.treeModel.insertNodeInto(MainFrame.sn,MainFrame.root,i);
                        System.out.print(oldname+"+"+i);
		}                
                num++;
            }
        } 
    //获取xml中所有数据库的名称
    public ArrayList getDbArray()
    {
        ArrayList dbname = new ArrayList();
        try{
        NodeList nodes = document.getElementsByTagName("dbname");
        if(nodes!=null){
           for(int i=0;i<nodes.getLength();i=i+1)
           {                    
                    dbname.add(nodes.item(i).getFirstChild().getNodeValue());                      
            }
        }
        }
        catch(Exception e){}
         return dbname;
    }
    //从数据库中找到需要的数据
    public ArrayList getElement(String name,String tablename)
    {
        ArrayList dbname = new ArrayList();
       try{
       NodeList nodes = document.getElementsByTagName(name);
       if(nodes!=null){
           for(int i=0;i<nodes.getLength();i=i+1)
           {                    
                    Element e=(Element)nodes.item(i);
                    Element dd=(Element)e.getParentNode().getParentNode();
                   // System.out.print(dd.getAttribute("name"));
                    if(dd.getAttribute("name").equals(tablename))
                    {
                        dbname.add(nodes.item(i).getFirstChild().getNodeValue());                      
                    }
            }
        }
        }
        catch(Exception e){}
         return dbname;
    }
    //下列是关于数据库中表的操作
    public void addTable(String dbname,String tbname)
    {
        //先找到数据库文件
        DocumentBuilderFactory dbf1 = DocumentBuilderFactory.newInstance();
        try
        {            
            DocumentBuilder db1 = dbf1.newDocumentBuilder();
            Document dmt=db1.parse("f://DataBase/"+dbname+".xml");
            //在该数据库文件中创建一个表格
            Element dn1 = dmt.createElement("dbname"); 
            dn1.appendChild(dmt.createTextNode(String.valueOf(dbname))); 
            Element rt=(Element)dmt.getFirstChild();           
            rt.appendChild(dn1);
        }catch(Exception e)
        {
                System.out.print("aaa");
        }
        
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -