0
点赞
收藏
分享

微信扫一扫

XML介绍与使用

穆熙沐 2022-04-20 阅读 75
java-ee


       学习网站:https://www.w3school.com.cn/x.asp
        XML概述:全称为(EXtensible Markup Language) 是一种可扩展的语言
                标记语言:通过标签来描述数据的一门语言(标签我们有时候也称之为元素)
                可扩展:标签的名字是可以自定义的
            可以理解为XML是由很多标签组成的,而标签名是可以自定义的
        作用:
            用来进行存储数据和传输数据
            作为软件的配置文件
        标签的规则:
                标签必须有一对尖括号和合法标识符组成
                例如:<student>
                标签必须成对出现
                <student></student>   第一个是开始标签 第二个是结束标签
                特殊的标签是可以不成对,但是必须有结束标记
                <address/>
                标签中可以定义属性,标签和标签名空格隔开,属性值必须用引号引起来
                <student id="1"><student>  student就是标签名  id就是属性名  中间用空格 1用引号引起来  单双引号都可以  但必须成对,不能一单一双
                标签必须正确的嵌套
                正确示例:<student id="1"><name>张三</name></student>
                错误示例:<student id="1"><name>张三</student></name>
        XML语法规则:
                1.XML的文件后缀名为:xml
                2.文档声明必须是第一行第一列
                    <?xml version= "1.0" encoding = "UTF-8" standalone= "yes" ?>
                        version:该属性是必须存在的
                        encoding:该属性不是必须的,表示打开当前xml文件应该使用什么字符编码表(一般取值是UTF-8)
                        standalone:该属性不是必须的,描述XML文件是否依赖其他的XML文件,取值为yes/no
                3.必须存在一个根标签,有且只有一个
                4.xml文件中可以定义注释信息
                5.xml文件可以存在特殊字符  
                    &lt;   <  小于
                    &gt;   >   大于
                    &amp;   &  和号
                    &apos;  '  单引号
                    &quot;   "   引号
                6.XML文件中可以存在CDATA区
                    <![CDATA{...内容...}]>
            示例:
                再SRC目录下创建同级目录student.xml文件
                

<?xml version="1.0" encoding= "UTF-8"?>
                <!--注释的写法-->
                <!--这个xml用来描述多个学生信息-->
                <students>
                    <!--第一个学生信息-->
                    <students id="1">
                        <name>张三</name>
                        <age>22</age>
                        <info>学生的&lt;张三&gt;</info>
                        <message><![CDATA[里边可以写一些我们想写的内容特殊字符也可以<<<>>>>并不会影响报错]}]]></message>
                    </students>
                    <!--第二个学生信息-->
                    <students id="2">
                        <name>李四</name>
                        <age>18</age>
                    </students>
                
                </students>


        XML解析
            常见的解析思想
                DDM(Document()Object Model)文档对象模型
                就是把文档的各个组成部分看做想对应的对象
                会把XML文件全部加载到内存中
                再内存中形成一个树形结构,再获取相应的值
            就像剥玉米一样,先获取到整体,在一层一层的进入
                Document对象:整个xml文档
                Element对象:所有标签
                Attribute:所有属性
                Text对象:所有文本内容
                都有一个父类Node对象
        XML的解析工具
            JAXP:SUN公司提供的一套XML的解析API
            JDOM:开源组织提供了一套XML的解析的API—jdom
            DOM4J(全称:Dom For Java): 开源组织提供了一套XML的解析的API-dom4j
            pull:主要引用再Android手机端解析xml
            主要学习DOM4J  可以通过https://dom4j.github.io/去下载dom4j
            下载压缩包解压  
            
            再SRC目录下创建同级目录libs  并把文件夹中的dom4j-1.6.1.jar 粘贴到libs  并右键单击jar包   点击Add as Library  表示要导入到当前项目中  


            
        需求:解析这个xml文件,将解析到的数据封装到学生对象中,并将学生对象存储到ArrayList集合中,遍历集合
            xml文件内容:
            
            需要加一个学生类
            

public class Student {
            private String id;
            private String name;
            private int age;
        
            public Student(String id, String name, int age) {
                this.id = id;
                this.name = name;
                this.age = age;
            }
        
        
            @Override
            public String toString() {
                return "Student{" +
                        "id='" + id + '\'' +
                        ", name=" + name +
                        ", age=" + age +
                        '}';
                }
            }


            测试类:
          

  /**
            * 利用dom4j解析XML文件
            */
            public class test {
                public static void main(String[] args) throws DocumentException {
                    //获取解析器对象
                    SAXReader saxReader=new SAXReader();
                    //利用解析器把xml文件加载到内存中,并返回一个文档对象
                    Document document = saxReader.read(new File("D:\\workspace\\xmle\\xml\\studnet.xml"));
                    //获取到根标签
                    Element rootElement = document.getRootElement();
                    //通过根标签获取student标签
                    //elements()获得所有的子标签  会把这些子标签放到一个集合
                    List elements = rootElement.elements();
                    System.out.println(elements.size());
                    //element("标签名")  可以获取调用者所有的指定的子标签,会把这些子标签放到一个集合中并返回
                    List<Element> studnet = rootElement.elements("students");
                    //用来装学生对象
                    ArrayList<Student> list=new ArrayList<>();
                    //遍历集合得到每一个标签
                    for (Element element : studnet) {
                        //element标识每一个student标签
                        //获取到id的属性值
                        Attribute attribute = element.attribute("id");
                        String id = attribute.getValue();
                        //获取name标签
                        //element("name")  获取调用者指定的子标签
                        Element name = element.element("name");
                        //获取这个标签的标签体
                        String text = name.getText();
                        //获取age标签
                        Element age = element.element("age");
                        //获取age的标签体
                        String text1 = age.getText();
            
                        Student s=new Student(id,text,Integer.parseInt(text1));
                        list.add(s);
                    }
                    //遍历操作
                    for (Student student : list) {
                        System.out.println(student);
                    }
                }
            }

 

 

 

举报

相关推荐

0 条评论