001 xml的使用和解析

===============

xml最简单的概述

<?xml version="1.0" encoding="UTF-8"?> 
<!--上面是xml的声明,必须要放在第一行
version是xml的版本,encoding是解码方式
-->

<!--  <>尖括号里的都是标签或者元素 ,标签必须成对出现 -->
<stu>
	<name>张三</name>
	
<!-- 	下面这样的标签,即是开始也是结束,一般配合属性使用-->
	<age/>
</stu>

但是xml肯定是和java一起使用的,我们用xml存储数据,用java读取出来

而用java读取xml需要dom4j这个第三方的包

我们这里只做简单的使用,如果想深入,这是dom4j的教程    https://www.cnblogs.com/sharpest/p/7877501.html 

先写一个简单的xml

<?xml version="1.0" encoding="UTF-8"?>
<stus>

	<!-- 	给标签加属性 -->
	<stu id="100">
		
		<!-- 	<和&都不能使用  小于号用&lt;代替  大于号用&gt;代替    &用 &amp; 代替,后面有分号-->
		<name>呵呵&lt;</name>
		<age>10</age>
	</stu>
	
	
	<stu id="200">
		<name>哈哈</name>
		<age>11</age>
	</stu>
	
</stus>

写java代码解析

	public static void main(String[] args) throws Exception
	{
		// 创建(Simple aip for xml)读取对象
		SAXReader reader1 = new SAXReader();

		// 指定要解析的xml
		Document document1 = reader1.read(new File("src\\XML_main\\xml.xml"));

		// 得到xml的内容

		// 获取绝对路径地址
		System.out.println("绝对路径地址==" + document1.getName());

		// 获取根元素,根元素就是第一个标签
		Element rootElement = document1.getRootElement();

		// 根据元素获取第一个标签的名称
		System.out.println("第一个标签的名称"+rootElement.getName());

		// 获取子节点(子元素)的对象,需要指定子节点的名称,获取子节点的对象后可以操作增删查改
		System.out.println(rootElement.element("stu"));

		System.out.println("==========================");

		// 获取所有子节点,不包含孙节点
		List<Element> elements = rootElement.elements();
		for (Element element : elements)
		{
			//利用子节点获取孙字节
			System.out.println(element.element("name"));
			// 获取孙节点name的内容
			System.out.println(element.element("name").getText());

		}
	}

还可以使用XPath来快速定位节点

XPath这也只是做简单的使用  XPath教程 http://www.runoob.com/xpath/xpath-tutorial.html

public static void main(String[] args) throws Exception
	{
		// 创建(Simple aip for xml)读取对象
		SAXReader reader1 = new SAXReader();

		// 指定要解析的xml
		Document document1 = reader1.read(new File("src\\XML_main\\xml.xml"));

		// 获取根元素
		Element rootElement = document1.getRootElement();

		// 下面是Xpath,能快速定位到节点,但是还是需要添加jar包,在domj4的lib里jaxen-1.1-beta-6.jar
		// 返回的是Node,我们可以强转成Element,因为每一个节点就是元素
		// selectSingleNode是只取第一个节点(元素),所以即使写成//name也只是获取一个name节点
		Element nameElement = (Element) rootElement.selectSingleNode("//name");
		System.out.println(nameElement.getText());

		System.out.println("===============");

		// 获取所有name节点(元素)
		List<Element> list1 = rootElement.selectNodes("//name");
		for (Element element : list1)
		{
			System.out.println(element.getText());
		}
	}

猜你喜欢

转载自blog.csdn.net/yzj17025693/article/details/82822691
001