===============
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">
<!-- <和&都不能使用 小于号用<代替 大于号用>代替 &用 & 代替,后面有分号-->
<name>呵呵<</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());
}
}