欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JavaWeb-XML-学习笔记

程序员文章站 2022-05-08 13:15:43
...

xml

1.xml简介

xml是可扩展的标记性语言

2.xml作用

  • 用来保存数据,而且这些数据具有自我描述性
  • 还可以作为项目或者模块的配置文件
  • 还可以作为网络传输数据的格式,目前都是json为主

3.xml语法

1.文档声明
2.元素(标签)
3.xml属性
4.xml注释
5.文本区域(cdata区)

4.第一个xml文件

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!--以上是xml声明-->
<books>
    <book sn="SN123123123123">
        <name>时间简史</name>
        <author>霍金</author>
        <price>123</price>
    </book>
    <book sn="SN123123123124">
        <name>java从入门到放弃</name>
        <author>沙老师</author>
        <price>993</price>
    </book>
</books>

5.xml注释

同html注释

6.元素(标签)

xml文档必须有根元素
根元素就是*元素,
没有父标签的元素叫做*元素

6.1 文本区域(cdata区)

语法可以告诉xml解析器,cdata中的文本内容不需要xml解析

cdata格式:
<![CDATA[ 这里可以把你输入的字符原样显示,不会解析xml ]]>

7.xml解析技术

不管是html语言还是xml语言,都可以使用w3c组织制定的dom技术进行解析、

document对象标签整个文档。

7.1.第三方的解析库:

  • jdom 在 dom的基础上进行了封装
  • dom4j有对jdom进行了封装
  • pull主要用于android手机开发。是在sax非常类似都是事件机制解析xml文件

8.dom4j解析技术

8.1.类库的使用

  • 导入dom4j.jar包
  • 导入junit测试jar包
package com.atguigu.pojo;

import org.dom4j.Document;
import org.dom4j.io.SAXReader;
import org.junit.Test;

public class dom4jTest {
    @Test
    public void test() throws Exception {
        //创建一个saxreader输入流,去读取xml文件,生成document对象
        SAXReader reader = new SAXReader();
        Document read = reader.read("src/books.xml");
        System.out.println(read); //[email protected] [Document: name src/books.xml]
    }
}

8.2.解析

/*
     读取books.xml文件生成java类
     */
    @Test
    public void test2() throws DocumentException {
//        读取xml文件
        SAXReader reader = new SAXReader();
//        在junit测试中,相对路径是从模块名开始的
        Document read = reader.read("src/books.xml");
//        通过document对象获取根对象
        Element rootElement = read.getRootElement();
//        System.out.println(rootElement);
//        通过根元素获取标签对象,通过标签名查找
        List<Element> books = rootElement.elements("book");
//        遍历每个处理每个标签转换为类
        for (Element book : books) {
//            asxml把标签对象转换字符串
//            System.out.println(book.asXML());
            Element name = book.element("name");
            //getText();可以获取标签内的文本内容
            String nameText = name.getText();
            //直接获取指定标签名的文本内容
            String priceText = book.elementText("price");
            String authorText = book.elementText("author");
            String sn = book.attributeValue("sn");
            System.out.println(new Book(sn, nameText, authorText, new BigDecimal(priceText)));//Book{sn='SN123123123123', name='时间简史', author='霍金', price=123}
        }
    }