xml文件

XML

什么是xml?

xml是可扩展的标记性语言

xml的作用?

xml 的主要作用有:
1、用来保存数据,而且这些数据具有自我描述性
2、它还可以做为项目或者模块的配置文件
3、还可以做为网络传输数据的格式(现在 JSON 为主)。

xml语法

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

新建一个xml文件,在头部声明。

<?xml version="1.0" encoding="UTF-8" ?>
<!--vesion是xml的版本,encoding表示xml文件的编码-->
<?xml version="1.0" encoding="UTF-8" ?>
<!--vesion是xml的版本,encoding表示xml文件的编码-->
<books>
    <book sn="图书编号1">
        <name>a</name>
<!--        &lt是小于号的转义,&gt是大于号的转义-->
<!--        <author>&lt;aa&gt;</author> -->
        <author>
<!--            CDATA告诉xml文件这里面是文本就不会解析括号-->
            <![CDATA[<aa>]]>
        </author>
        <price>aaa</price>
    </book>
    <book sn="图书编号2">
        <name>b</name>
        <author>bb</author>
        <price>bbb</price>
    </book>
</books>
xml介绍和获取

attribute是属性,比如上面的sn就是属性,为元素提供额外的信息
最底层的元素叫根元素

获取xml文件中的内容

  1. 导入一个叫dom4j的jar包,dom4j就是专门用来处理xml文件的包。
  2. 读取books.xml(创建一个saxreader输入流,去读取xml文件,生成doucument对象)
  3. 通过Document对象获取根元素
  4. 通过根元素获取book标签对象
  5. 遍历,处理每个book书签转换成book类

里面的一些方法:
①Document对象获取根元素:.getRootElement()
②根元素获取子元素:.element(获取一个子元素,要给定名字) / .elements(获取多个子元素,可以给定名字也可以不给)
③子元素的操作:
.element():继续获取子元素
.getText():可以获取标签中的文本内容
.elementText(指定标签名):直接获取指定标签名的文本内容
.attributeValue(指定属性名):获取指定属性名的内容
.asXML():把标签对象,转换为标签字符串

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

import java.util.List;

/**
 * @Author: yyyzl
 * @Date: 2020/9/28
 **/
public class Dom4j {
    @Test
    public void test1() throws DocumentException {
        //创建一个saxreader输入流,去读取xml文件,生成doucument对象
        SAXReader saxReader=new SAXReader();
        Document read = saxReader.read("src/book/books.xml");
        System.out.println(read);
    }

    @Test
    public void Test2() throws DocumentException {
        //1 读取books.xml
        SAXReader reader=new SAXReader();
        //在Junit测试中,相对路径是从模块名开始算
        Document document = reader.read("src/book/books.xml");
        //2 通过Document对象获取根元素
        Element rootElement = document.getRootElement();
//        System.out.println(rootElement.getName());
        //3 通过根元素获取book标签对象
        List<Element> elements = rootElement.elements("book");
        //4 遍历,处理每个book书签转换成book类
        for(Element e:elements){
            //asXML() 把标签对象,转换为标签字符串
            //element:取到指定名字的element
            Element name = e.element("name");
            //getText():可以获取标签中的文本内容
            String text = name.getText();
            //直接获取指定标签名的文本内容
            String price = e.elementText("price");
            //获取标签上的属性值
            String  snvalue=e.attributeValue("sn");
            
            System.out.println(e.asXML());  //把xml整个输出
            System.out.println(name.asXML()); //<name>a</name>
            System.out.println(text);     //a
            System.out.println(price);	  //aaa
            System.out.println(snvalue);  //图书编号1
        }
    }
}
©️2020 CSDN 皮肤主题: 游动-白 设计师:上身试试 返回首页