📄 parsexml.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 + -