Java中Xml的相关方法和案例

一、Xml

1.Xml文档的读取方法

public class Test1 {
    
    
    @Test//查询方法一
    public void test1() throws Exception {
    
    
        //1.创建一个解析器
        SAXReader reader=new SAXReader();
        //2.读取某个xml文件,返回xml对应的dom文档树
        Document doc=reader.read("src\\xml\\msg.xml");
        //3.获得根标签
        Element root=doc.getRootElement();
        System.out.println(root.getName());
        //4.1 获取所有子标签
        List<Element> msgs=root.elements();
        for (Element msg : msgs) {
    
    
            System.out.println(msg.getName());
        }
        //4.1 获取第一个子标签--2种方式
        Element e=msgs.get(0);
        System.out.println(e.getName());
        Element ee=root.element("msg");
        System.out.println(ee.getName());
        //4.2使用迭代器获得子标签
        Iterator it = e.elementIterator();
        while (it.hasNext()){
    
    
            Element e1=(Element) it.next();
            System.out.println(e1.getName()+"--"+e1.getText());
        }
    }
    @Test//查询方法二
    public void test2() throws Exception {
    
    
        //1.获取sax解析器对象
        SAXReader reader = new SAXReader();
        //2.读取某个xml文件--返回一个文档对象,表示整个xml文档树
        Document doc = reader.read("src/xml1/a.xml");
        //3.获取根标签
        Element root = doc.getRootElement();
        //4.逐级向下寻找标签
        Element family1 = (Element) root.elements("family").get(0);
        Element person1 = (Element)family1.elements("person").get(0);
        Element age = person1.element("age");
        System.out.println(age.getText());//获取标签的文本内容
    }
}

2.Xml文档上对于标签的增加

 @Test//新增(在原来的dom树上新增)
    public void test2() throws Exception{
    
    
    //一、构建文档树
        //1.创建一个解析器
        SAXReader reader=new SAXReader();
        //2.读取某个xml文件,返回xml对应的dom文档树
        Document doc=reader.read("src/xml/msg.xml");
        //3.获得根标签
        Element root = doc.getRootElement();
        //4.给根标签加一个子标签
        Element msg3 = root.addElement("msg3");
        Element content = msg3.addElement("content");
        content.setText("元旦快乐!");

    //二、用新的文档树覆盖旧的文档树
        //1.借助字节输出流
        FileOutputStream out = new FileOutputStream("src/xml/msg.xml");
        //2.需要一个格式美化对象
        OutputFormat format=OutputFormat.createPrettyPrint();
        //3.根据上面的2个对象,构建一个xml输出流对象
        XMLWriter writer = new XMLWriter(out,format);
        //4.将doc文档树 重新写入 xml文件中
        writer.write(doc);
        //5.关闭流--刷新缓冲区
        writer.close();
    }

3.创建一个新的Xml文档来进行标签和内容的增加

@Test//新增--场景2(创建新的dom树)
    public void test3() throws Exception{
    
    
        //1.创建一个文档对象--dom树
        Document doc= DocumentHelper.createDocument();
        //2.添加根元素
        Element root = doc.addElement("heroes");
        //3.添加子元素
        Element hero = root.addElement("hero");
        Element name = hero.addElement("name");
        Element age = hero.addElement("age");
        //给子元素设置文本
        name.setText("曹操");
        age.setText("26");

        //将上面创建的dom树,写进一个xml文件中       字节输出流--指定xml文件路径                      美化器,规范xml格式
        XMLWriter xmlWriter = new XMLWriter(new FileOutputStream("src/xml/hero.xml"),OutputFormat.createPrettyPrint());
        xmlWriter.write(doc);
    }
data = pd.read_csv(
    'https://labfile.oss.aliyuncs.com/courses/1283/adult.data.csv')
print(data.head())

4.将对象中的信息写入Xml文档中的案例:

package work.one;

public class Animal {
    
    
    private String name;
    private int age;

    public Animal() {
    
    
    }

    public Animal(String name, int age) {
    
    
        this.name = name;
        this.age = age;
    }

    public String getName() {
    
    
        return name;
    }

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

    public int getAge() {
    
    
        return age;
    }

    public void setAge(int age) {
    
    
        this.age = age;
    }
}

package work.one;

public class Elephant extends Animal {
    
    
    private double weight;

    public Elephant() {
    
    
    }

    public Elephant(double weight) {
    
    
        this.weight = weight;
    }

    public Elephant(String name, int age, double weight) {
    
    
        super(name, age);
        this.weight = weight;
    }

    public double getWeight() {
    
    
        return weight;
    }

    public void setWeight(double weight) {
    
    
        this.weight = weight;
    }
}

package work.one;

public class Monkey  extends Animal{
    
    
    private double height;

    public Monkey() {
    
    
    }

    public Monkey(double height) {
    
    
        this.height = height;
    }

    public Monkey(String name, int age, double height) {
    
    
        super(name, age);
        this.height = height;
    }

    public double getHeight() {
    
    
        return height;
    }

    public void setHeight(double height) {
    
    
        this.height = height;
    }
}

package work.one;

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

import java.io.FileOutputStream;
import java.util.ArrayList;

public class Test1 {
    
    
    public static void main(String[] args) throws Exception {
    
    
        ArrayList<Animal> animals = new ArrayList<>();
        animals.add(new Elephant("胖胖",2,1.3));
        animals.add(new Elephant("肥仔",1,1.5));
        animals.add(new Elephant("憨憨",3,1.8));
        animals.add(new Monkey("星仔",3,0.8));
        animals.add(new Monkey("狒狒",4,0.9));
        animals.add(new Monkey("猴哥",5,1.0));
        createXml(animals);
    }

    public static void createXml(ArrayList<Animal> animals) throws Exception {
    
    
        //创建一个dom树
        Document doc = DocumentHelper.createDocument();
        //添加根节点
        Element ani = doc.addElement("animals");
        //遍历集合
        for (int i = 0; i < animals.size(); i++) {
    
    
            //添加子节点
            Element a = ani.addElement("animal");
            //给子节点添加子节点
            Element name = a.addElement("name");
            name.setText(animals.get(i).getName());
            Element age = a.addElement("age");
            //age.setText(Integer.toString(animals.get(i).getAge()));
            //age.setText(String.valueOf(animals.get(i).getAge()));
            age.setText(animals.get(i).getAge()+"岁");
            //判断 是大象还是猴子
            if(animals.get(i) instanceof Elephant){
    
    
                Element weight = a.addElement("weight");
                weight.setText(((Elephant) animals.get(i)).getWeight()+"吨");
            }else {
    
    
                Element height = a.addElement("height");
                height.setText(((Monkey) animals.get(i)).getHeight()+"米");
            }
        }
        //写入xml中
        FileOutputStream out = new FileOutputStream("day23-java23/src/work/one/animal.xml");
        OutputFormat format = OutputFormat.createPrettyPrint();
        XMLWriter writer = new XMLWriter(out, format);
        writer.write(doc);
        writer.close();
    }
}

在这里插入图片描述

总结

以上就是Xml文档相关方法和案例的全部内容,主要是Xml的内容增加以及查询方面的方法。

猜你喜欢

转载自blog.csdn.net/StruggleBamboo/article/details/112028709