XML

什么是xml以及他的作用


第一个xml示范文件

<?xml version="1.0" encoding="UTF-8" ?>
 <!--
<?xml version="1.0" encoding="UTF-8 ?>
以上内容就是xml文件的声明
version="1.0"   version表示xml的版本
encoding="UTF-8 ? encoding表示xml文件本身的编码
-->
<books><!--books表示多个图书的信息-->
    <book sn="SN1232233433"><!--book表示一个图书的信息,sn表示该图书的序列哈-->
        <name>时间简史</name><!--name标签表示图书名-->
        <author>霍金</author><!--author表示作者-->
        <price>75</price><!--表示价格-->

    </book>



    <book sn="SN12323333333"><!--book表示一个图书的信息,sn表示该图书的序列哈-->
        <name>java从入门到放弃</name><!--name标签表示图书名-->
        <author>沙老师</author><!--author表示作者-->
        <price>9.9</price><!--表示价格-->

    </book>


</books>

xml语法介绍

  • 1.xml注释的语法和html一样
  • 先熟悉一下html标签



  • xml对大小写敏感


xml解析技术的介绍

  • 以前主要用的是dom和SAX的解析技术,但是现在这2个技术已经过时了(具体参考官方笔记)
    现在主要重点和流行的是dom4j技术,因为很多框架的底层用的也是这个技术来解析xml

使用dom4j读取xml文件得到document对象

  • 将zip压缩包解压后
  • dosc文件夹下面是dom4j的学习文档,从index.html进入
  • lib文件夹下面是dom4j所依赖的jar包
  • src下面是dom4j的原码和一些测试的代码

使用dom4j来解析下面的内容

  • 我们现在需要将xml里面每一个book都解析成Book类中的一个对象实例

首先我们需要将dom4j的jar包添加到我们的模块下面的lib目录下面(lib专门用来放jar包)

  • 操作代码
package com.atguku.pojo;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

import java.util.List;

public class Dom4jTest {
    public static void main(String[] args) throws DocumentException {
        //创建一个SAXReader输入流去读取xml配置文件,生Document对象
        SAXReader saxReader = new SAXReader();
        Document document = saxReader.read("xml\\src\\books.xml");

        //读取book.xml文件生成book类

        //1.读取book.xml文件

        //2.通过Document对象获取根元素
         Element rootElement = document.getRootElement();

        //3.通过根元素获取book标签对象
        //element()和elements()都是通过标签名查找子元素
         List<Element> books = rootElement.elements("book");//如果根元素有多个子元素则用elements
        //4.遍历,处理处理每个book标签转换为Book类对象
        for (Element book : books) {
            //asString()方法将book标签转换为字符串
            //System.out.println(book.asXML());
             Element nameElement = book.element("name");//得到name标签对象
             String nameText = nameElement.getText();//getText可以获得标签中的文本内容
                //elementText()可以获得指定标签名的文本内容(就不需要先得到标签对象了)
             String priceText  = book.elementText("price");
             String authorText = book.elementText("author");
            //获取属性值
             String snValue  = book.attributeValue("sn");
                //将得到的内容封装成对象
            System.out.println(new Book(snValue,nameText,Double.parseDouble(priceText),authorText));
            /*
            Book{sn = SN12341232, name = 辟邪剑谱, price = 9.9, author = 班主任}
Book{sn = SN12341231, name = 葵花宝典, price = 99.99, author = 班长}
             */
        }

    }
}

posted @ 2023-08-23 10:24  一往而深,  阅读(93)  评论(0编辑  收藏  举报