xml语法和解析实战案例

一. 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[   …内容…  ]]> 

二.xml解析(dom4j)
1.四个常用对象

Document对象:整个xml文档
Element对象:所有标签   (Node对象父对象)   
Attribute对象:所有属性 (Node对象父对象)  
Text对象:所有文本内容  (Node对象父对象)  

2.需求:

解析这个xml文件,
将解析到的数据封装到学生对象中.
并将学生对象存储到ArrayList集合中
遍历集合

3.代码实现
3.1xml内容

<?xml version="1.0" encoding="UTF-8" ?>
<!--注释的内容-->
<students>
    <!--第一个学生信息-->
    <student id="1">
        <name>张三</name>
        <age>23</age>
        <!--<info>学生&lt; &gt;&gt;&gt;&gt;的信息</info>-->
        <!--<message> <![CDATA[内容 <<<<<< >>>>>> ]]]></message>-->
    </student>
    <!--第二个学生信息-->
    <student id="2">
        <name>李四</name>
        <age>24</age>
    </student>
</students>

3.2 dom4j解析xml代码

package com.itheima.xmlparse;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
/**  利用dom4j解析xml文件 */
public class XmlParse {
    public static void main(String[] args) throws DocumentException {
        //1.获取一个解析器对象
        SAXReader saxReader = new SAXReader();
        //2.利用解析器把xml文件加载到内存中,并返回一个文档对象
        Document document = saxReader.read(new File("myxml\\xml\\student.xml"));
        //3.获取到根标签
        Element rootElement = document.getRootElement();
        //4.通过根标签来获取student标签
        //elements():可以获取调用者所有的子标签.会把这些子标签放到一个集合中返回.
        //elements("标签名"):可以获取调用者所有的指定的子标签,会把这些子标签放到一个集合中并返回
        //List list = rootElement.elements();
        List<Element> studentElements = rootElement.elements("student");
        //用来装学生对象
        ArrayList<Student> list = new ArrayList<>();
        //5.遍历集合,得到每一个student标签
        for (Element element : studentElements) {
            //element依次表示每一个student标签
            //获取id这个属性
            Attribute attribute = element.attribute("id");
            //获取id的属性值
            String id = attribute.getValue();
            //获取name标签
            //element("标签名"):获取调用者指定的子标签
            Element nameElement = element.element("name");
            //获取这个标签的标签体内容
            String name = nameElement.getText();
            //获取age标签
            Element ageElement = element.element("age");
            //获取age标签的标签体内容
            String age = ageElement.getText();
            Student s = new Student(id,name,Integer.parseInt(age));
            list.add(s);
        }
        //遍历操作
        for (Student student : list) {
            System.out.println(student);
        }
    }
}

3.3 学生对象实体类

package com.itheima.xmlparse;
public class Student {
    private String id;
    private String name;
    private int age;
    public Student() {
    }
    public Student(String id, String name, int age) {
        this.id = id;
        this.name = name;
        this.age = age;
    }
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    @Override
    public String toString() {
        return "Student{" +"id='" + id + '\'' +", name='" + name + '\'' + ", age=" + age +'}';
    }
}

你可能感兴趣的:(阶段二Java,xml,dom4j,xml解析,xml语法)