学习大数据——xml介绍和xml文件的解析

XML简介:

  1. XML–可扩展标记语言eXtensible Markup Language
  2. 由W3C组织发布,目前推荐遵守的是W3C组织于2000年发布的XML1.0规范
  3. XML的使命,就是以一个统一的格式,组织有关系的数据,为不同平台下的应用程序服务
  4. XML用来传输和存储数据,HTML用来显示数据
  5. XML没有预定义标签,均为自定义标签

XML用途:

  1. 配置文件
    JavaWeb中的web.xml
    C3P0中的c3p0-config.xml
  2. 数据交换格式
    Ajax
    WebService
  3. 数据存储
    保存关系型数据

XML基本语法:

  1. XML文档组成
    ① XML声明
    version属性指定XML版本,固定值是1.0
    encoding指定的字符集,是告诉解析器使用什么字符集进行解码,而编码是由文本 编辑器决定的
    ② CDATA区
    当XML文档中需要写一些程序代码、SQL语句或其他不希望XML解析器进行解析 的内容时,就可以写在CDATA区中
    XML解析器会将CDATA区中的内容原封不动的输出
    CDATA区的定义格式:<![CDATA[…]]>
  2. 语法规则
    ① XML声明要么不写,要写就写在第一行,并且前面没有任何其他字符
    ② 只能有一个根标签
    ③ 标签必须正确结束
    ④ 标签不能交叉嵌
    ⑤ 严格区分大小写
    ⑥ 属性必须有值,且必须加引号
    ⑦ 标签不能以数字开头
    ⑧ 注释不能嵌套

XML文件实例:

<?xml version="1.0" encoding="UTF-8"?>
<students>
	<student id="1">
		<name>孙悟空</name>
		<gender></gender>
		<age>520</age>
		<address>花果山</address>
	</student>
	<student id="2">
		<name>猪八戒</name>
		<gender></gender>
		<age>1500</age>
		<address>高老庄</address>
	</student>
	<student id="3">
		<name>沙悟净</name>
		<gender></gender>
		<age>1000</age>
		<address>流沙河</address>
	</student>
	<student id="4">
		<name>白龙马</name>
		<gender></gender>
		<age>10000</age>
		<address>鹰愁涧</address>
	</student>
	<![CDATA[
	select * from employees where age < 500
	]]>
</students>

XML文件的解析:
解析的类:

public class Student {
		
	private String id;
	private String name;
	private String gender;
	private String age;
	private String address;
	public Student(String id, String name, String gender, String age, String address) {
		super();
		this.id = id;
		this.name = name;
		this.gender = gender;
		this.age = age;
		this.address = address;
	}
	public Student() {
		super();
	}
	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 String getGender() {
		return gender;
	}
	public void setGender(String gender) {
		this.gender = gender;
	}
	public String getAge() {
		return age;
	}
	public void setAge(String age) {
		this.age = age;
	}
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
	@Override
	public String toString() {
		return "Student [id=" + id + ", name=" + name + ", gender=" + gender + ", age=" + age + ", address=" + address
				+ "]";
	}
	
}

解析:

public class Dom4jTest {
	public static void main(String[] args) throws DocumentException {
		//1.创建解析器对象
		SAXReader saxReader = new SAXReader();
		//2.解析xml文件得到Document对象
		Document document = saxReader.read("students.xml");
		//3.获取根标签
		Element rootElement = document.getRootElement();
		//4.获取所有的student标签
		List<Element> elements = rootElement.elements("student");
		System.out.println(elements.size());
		//5.遍历得到的每一个student标签
		for (Element element : elements) {
			//获取id
			String id = element.attributeValue("id");
			System.out.println(id);
			//获取name标签
//			Element nameEle = element.element("name");
//			//获取name标签中的文本值
//			String name = nameEle.getText();
			String name = element.elementText("name");
			System.out.println(name);
			//获取gender
			String gender = element.elementText("gender");
			//获取age
			String age = element.elementText("age");
			//获取address
			String address = element.elementText("address");
			//封装Student对象
			Student student = new Student(id, name, gender, age, address);
			System.out.println(student);
			
		}
	}
}
发布了37 篇原创文章 · 获赞 7 · 访问量 691

猜你喜欢

转载自blog.csdn.net/qq_40394792/article/details/104239942
今日推荐