Java XML

目录

XML简介

XML编写注意事项

dom4j解析XML


XML简介

XML(EXtensible Markup Language),可扩展标记语言

特点:

XML与操作系统、编程语言的开发平台无关

实现不同系统之间的数据交换

作用:

数据交互

配置应用程序和网站

Ajax基石

<?xml version="1.0" encoding="UTF-8"?>      //声明

XML文档内容由一系列标签元素组成

<元素名 属性名=“属性值”>元素内容</元素名>

XML编写注意事项

所有XML元素都必须有结束标签

XML标签对大小写敏感

XML必须正确的嵌套同级标签以缩进对齐

元素名称可以包含字母、数字或其他的字符

元素名称不能以数字或者标点符号开始

元素名称中不能含空格

dom4j解析XML

1.读取xml文件 SAXReader()

//将xml文件加载到内存中 XML解析器

SAXReader saxReader = new SAXReader();

//document 加载执行xml文档获取Document对象

Document document = saxReader.read(XML路径);

2.获取XML根节点getRootElement()

Element rootElement = document.getRootElement();

3.获取当前节点下所有子节点 elements()

//获取根节点下所有子节点

List<Element> Elist = rootElement.elements();

4.根据指定子元素名,获取元素下所有子节点

//获取节点名称为books下所有子节点

List<Element> Elist = rootElement.elements(“books”);

5.根据指定子元素名,获取子元素对象,如果重复,则获取第一个

//获取节点名称为books下单个子节点

Element element= rootElement.element(“books”);

6.设置元素文本内容 setText()

element.setText("内容");

7.获取当前节点文本内容 getText()

element.getText()

8.根据指定子元素名,获取元素中的文本

element.elementText(“book”)

9.获取当前节点属性 attributeValue(属性名)

element.attributeValue("name")

10.创建节点 Element对象.addElement("节点名")

Element element = rootElement.addElement("span");

11.节点添加,修改属性 Element对象.addAttribute("节点属性名",“属性值”)

element.addAttribute("type","属性值");

12.新XML添加 Document对象

通过DocumentHelper.creatDocument()创建一个Document对象

Document read = DocumentHelper.createDocument();

13.设置XML编码

通过OutputFormat的静态方法createPrettyPrint()创建OutputFormat对象,并设置编码集

OutputFormat

outputFormat=OutputFormat.createPrettyPrint();

outputFormat.setEncoding("UTF-8");

14.写入XML文件

//写入XML文件的位置 以及指定的格式

XMLWriter xmlWriter=new XMLWriter(new FileWriter("cs.xml"),outputFormat);

//开始写入XML文件 写入Document对象

xmlWriter.write(document); xmlWriter.close();

/**
 * XML工具类
 * @author zy
 *
 */
public class XMLUtils {
​
    public Document doc = null;
​
    public void loadDocument() {
        //创建解析器类
        SAXReader reader = new SAXReader();
        //读取xml文件
        try {
            doc = reader.read("student.xml");
        } catch (DocumentException e) {
            e.printStackTrace();
        }
    }
​
    /**
    *添加
    */
    public void addXML() throws Exception{
        //创建一个空白Document对象
        Document newdoc = DocumentHelper.createDocument();
        Element root = newdoc.addElement("stus");
​
        Element e1 = root.addElement("stu");
        e1.addAttribute("id", "1001");
        e1.addAttribute("name", "李四");
        e1.addAttribute("age", "17");
​
​
        Element e2 = root.addElement("stu");
        e2.addAttribute("id", "1002");
        e2.addAttribute("name", "王五");
        e2.addAttribute("age", "17");
​
        Element e3 = root.addElement("stu");
        e3.addAttribute("id", "1003");
        e3.addAttribute("name", "马三立");
        e3.addAttribute("age", "17");
​
        //将doc 重新保存
        //指定编码格式
        OutputFormat of = OutputFormat.createPrettyPrint();
        of.setEncoding("utf-8");
​
        XMLWriter xmlWriter = new XMLWriter(new FileWriter("1.xml"),
                of);
        xmlWriter.write(newdoc);//写入
        xmlWriter.close();
​
    }
​
​
    /**
     * 删除
     */
    public void deleteXML() throws Exception{
​
        Element root = doc.getRootElement();
        Iterator<Element> it =root.elementIterator();
        while(it.hasNext()) {
            //获得子集对象element,在拿到sage对象下的文本内容
            Element stu = it.next();
            String stuSage = stu.element("sage").getText();
            //将字符串转换为int类型
            int sage = Integer.parseInt(stuSage);
            if(sage>18) {
                //删除      父级删除子集       父级.remove(子集对象)
                stu.getParent().remove(stu);
            }
        }
​
        //将doc 重新保存
        //指定编码格式
        OutputFormat of = OutputFormat.createPrettyPrint();
        of.setEncoding("utf-8");
​
        XMLWriter xmlWriter = new XMLWriter(new FileWriter("student.xml"),
                of);
        xmlWriter.write(doc);//写入
        xmlWriter.close();
    }
​
    
    /**
     * 修改
     */
    public void updateXML() {
        try {
            //获得根节点
            Element root = doc.getRootElement();
​
            //新增子节点
            Element stu = root.addElement("stu");
            //给节点添加属性
            stu.addAttribute("id", "1004");
​
            stu.addElement("sname").setText("小美");
            stu.addElement("sage").setText("19");
​
            //将doc 重新保存
            //指定编码格式
            OutputFormat of = OutputFormat.createPrettyPrint();
            of.setEncoding("utf-8");
​
            XMLWriter xmlWriter = new XMLWriter(new FileWriter("student.xml"),
                    of);
            xmlWriter.write(doc);//写入
            xmlWriter.close();
​
        } catch (Exception e) {
            e.printStackTrace();
        }
​
    }
​
    /**
     * 查询节点
     */
    public void showXML() {
        //JAR   java项目  java类  .class
        try {
            //获得根节点
            Element root = doc.getRootElement();
            //获得标签名称
            System.out.println("根节点名称:"+root.getName());
            //获得所有子节点
            List<Element> list = root.elements();
            for(Element e:list) {
                //获得元素属性
                String id = e.attributeValue("id");
                System.out.println("学生学号:"+id);
                //获得单个指定子节点
                Element sname = e.element("sname");
                Element sage = e.element("sage");
                //获得元素文本内容
                System.out.println("姓名:"+sname.getText());
                System.out.println("年龄:"+sage.getText());
                //获得指定名称的所有子节点
//              List<Element> es = e.elements("sname");
//              for(Element e1:es) {
//                  System.out.println(e1.getName());
//              }
                System.out.println("------------------------");
            }
​
​
        } catch (Exception e) {
            e.printStackTrace();
        }
​
    }
public static void main(String[] args) {
        XMLUtils xmlUtils = new XMLUtils();
        try {
              xmlUtils.addXML();        //添加
//            xmlUtils.deleteXML();     //删除
//            xmlUtils.loadDocument();  //创建解析器类,读取xml文件
//            xmlUtils.updateXML();     //修改
//            xmlUtils.showXML();       //查询
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值