基于用Java将数据存取于xml文件的操作的宠物管理系统

主代码:

import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

import java.io.FileOutputStream;
import java.util.List;
import java.util.Scanner;

public class test {

    public static void main(String[] args) throws Exception {
        Scanner sc=new Scanner(System.in);
        while (true){
            System.out.println("请选择您需要领养宠物还是捐献宠物:(领养:1,捐献:2)");
            int a=sc.nextInt();
            if (a==1){
                while (true){
                    SAXReader reader = new SAXReader();
                    Document read1 = reader.read("E:\\java\\Java11\\day22\\src\\homework\\hmk3\\pet2.xml");
                    Element element = read1.getRootElement();
                    List <Element> elements = element.elements();
                    System.out.print("请选择您要领养的宠物:");
                    for (Element e :elements) {
                        System.out.print(e.getName()+" ");
                    }
                    String name = sc.next();//类型
                    Element element1 = element.element(name);
                    List <Element>name1 = element1.elements("name");
                    System.out.print("请选择您要领养的宠物名称:");
                    for (Element e :name1) {
                        System.out.print(e.getText()+" ");
                    }
                    String name2=sc.next();//名字
                    Animal animal = new test().getAnimal(name,name2);
                    System.out.println(animal);
                    System.out.println("请选择是否继续领养:(true or false)");
                    boolean b=sc.nextBoolean();
                    if (b==false){
                        break;
                    }
                }
            }else if (a==2){
                System.out.println("请输入您要捐献的宠物种类");
                String type=sc.next();
                System.out.println("请输入捐献的宠物名称:");
                String name=sc.next();
                SAXReader reader = new SAXReader();
                Document root = reader.read("E:\\java\\Java11\\day22\\src\\homework\\hmk3\\pet2.xml");
                Element rootElement = root.getRootElement();
                Element element = rootElement.addElement(type);
                Element element1 = element.addElement("name");
                element1.setText(name);
                Element aClass = element.addElement("class");
                aClass.setText("homework.hmk3.pet");
                OutputFormat prettyPrint = OutputFormat.createPrettyPrint();
                XMLWriter xmlWriter = new XMLWriter(new FileOutputStream("E:\\java\\Java11\\day22\\src\\homework\\hmk3\\pet2.xml"),prettyPrint);
                xmlWriter.write(root);
                xmlWriter.close();
            }
        }
    }

    public Animal getAnimal(String name,String name2) throws Exception {
        SAXReader reader = new SAXReader();//创建解析
        Document read = reader.read("E:\\java\\Java11\\day22\\src\\homework\\hmk3\\pet2.xml");//读取文件路径
        Element rootElement = read.getRootElement();//读取根标签
        Element element1 = rootElement.element(name);//查找根标签下的子标签名字
        String aClass = element1.element("class").getText();//通过名字找到子标签的class
        String name1 = element1.element("name").getText();
        element1.element("name").getParent().remove(element1.element("name"));
        OutputFormat prettyPrint = OutputFormat.createPrettyPrint();
        XMLWriter xmlWriter = new XMLWriter(new FileOutputStream("E:\\java\\Java11\\day22\\src\\homework\\hmk3\\pet2.xml"),prettyPrint);
        xmlWriter.write(read);
        xmlWriter.close();
        XMLWriter xmlWriter2 = new XMLWriter(System.out, OutputFormat.createPrettyPrint());
        xmlWriter2.write(read);
        xmlWriter2.close();
        Animal o =(Animal)Class.forName(aClass).newInstance();
        o.setaClass(aClass);//传对象名
        o.setName(name1);//传路径
        return o;
    }
}

父类animal:

public class Animal {
    public String name;
    public String aClass;


    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getaClass() {
        return aClass;
    }

    public void setaClass(String aClass) {
        this.aClass = aClass;
    }

    @Override
    public String toString() {
        return "Animal{" +
                "name='" + name + '\'' +
                ", aClass=" + aClass +
                '}';
    }

}

animal子类,Dog,Elephant,Penguin和Pet

public class Animal {
    public String name;
    public String aClass;


    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getaClass() {
        return aClass;
    }

    public void setaClass(String aClass) {
        this.aClass = aClass;
    }

    @Override
    public String toString() {
        return "Animal{" +
                "name='" + name + '\'' +
                ", aClass=" + aClass +
                '}';
    }

}

其余animal子类都是照着写

public class Dog extends Animal {
    @Override
    public String toString() {
        return "Dog{" +
                "name='" + name + '\'' +
                ", aClass='" + aClass + '\'' +
                '}';
    }
}

下面是xml文件

<?xml version="1.0" encoding="UTF-8"?>
<animal> 
  <企鹅> 
    <name>皮皮2</name>  
    <class>homework.hmk3.Penguin</class> 
  </企鹅>  
  <大象> 
    <name>肉肉</name>  
    <class>homework.hmk3.Elephant</class> 
  </大象>  
  <狗狗> 
    <name>旺财</name>  
    <class>homework.hmk3.Dog</class> 
  </狗狗> 
</animal>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值