xml:Extensible Markup Language 可扩展标记语言。
优点:*可拓展
*标签自定义
-------- 与HTML的区别:1、 HTML 标签预定义,XML自定义。
2、 XML 定义严格,标签必须闭合,否则报错,HTML相对比较松散。
3、 XML 用来存储数据,HTML用于展示。
语法:
1、 xml文件后缀名为 .xml。
2、 第一行必须定义为 文档声明。
3、 有且仅有一个根标签。
4、 属性值必须用引号引起来。
5、标签名称区分大小写。
例:最基本的xml文件
<?xml version="1.0" ?> <!-- 有三个属性 version 必须 “1.0” encoding 当前文档编码格式
// standalone:是否独立
// * yes:不依赖其他文件
// * no:依赖其他文件 -->
<students>
<student id="1"> // id属性值 唯一
<name>张三</name>
<age>19</age>
<sex>男</sex>
</student>
<student>
<name>李四</name>
<age>19</age>
<sex>男</sex>
</student>
</students>
如果想要文本原样展示出来,需要使用 <![CDATA[ 数据 ]]> 标签。
XML 文档约束: 引入文档约束,更好地约束文档书写规则。
*DTD:简单约束
*Schema:复杂约束
引入:
DTD:* 本地:<!DOCTYPE 根标签名 SYSTEM "dtd文件的位置">
* 网络:<!DOCTYPE 根标签名 PUBLIC "dtd文件名字" "dtd文件的位置URL">
Schema:1.填写xml文档的根元素
2.引入xsi前缀. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3.引入xsd文件命名空间. xsi:schemaLocation="http://www.xxx.cn/xml student.xsd"
4.为每一个xsd约束声明一个前缀,作为标识 xmlns="http://www.xxx.cn/xml"
解析XML文件:
1、DOM:将标记语言一次性加载进内存,形成一颗文档树。
2、SAX:逐行读取。
DOM方式可以进行增删改等操作,但是占据内存较大,SAX相反。
Jsoup解析XML文件:
1、引入jar包
2、 相关操作
public class XmlTest1 {
public static void main(String[] args) throws IOException {
// 获取xml 文件 路径
String path = XmlTest1.class.getClassLoader().getResource("Students.xml").getPath();
// 获取xml 文件(Document)文档对象 通过json.parse方法
Document document = Jsoup.parse(new File(path), "utf-8");
// 获取相应标签内容
// 1. 获取元素数组 -- list
Elements elements = document.getElementsByTag("name");
// 2.获取元素对象 No.1
Element element = elements.get(0);
// 3.获取内容
String text = element.text();
System.out.println(text);
}
}