目录
XML简介
XML(EXtensible Markup Language),可扩展语言
特点
XML与操作系统,编程语言的开发平台无关
作用
数据交互
配置应用程序和网站
Ajax基石
XLM文档结构
<?xml version="1.0" encoding="UTF-8"?>
<clothes>
<s>
<max>165</max>
</s>
<m>
<min>165</min>
<max>170</max>
</m>
<L>
<最高身高>175</最高身高>
<最低身高>170</最低身高>
</L>
</clothes>
XML标签
XML文档内容是由一系列标签元素组成
<元素名 属性名 = ”属性值“>元素内容</元素名>
空元素:<name> </name>,<name></name>,<name/>
XML编写注意事项
所有XML元素都必须有结束标签
XML标签对大小写敏感
XML必须正确的嵌套
同级标签以缩进对齐
元素名称可以包含字母,数字或其他的字符
元素名称不能以数字或者标点符号开始
元素名称中不能含空格
属性命名空间
除非带有前缀,否则属性属于所有元素的命名空间
XLM命名空间的作用
解决在复杂,大型XML文件中,出现名称相同,但是含义不同的元素
解析XML技术
DOM:
基于XML文档树结构的解析
适用于多次访问的CML文档
特点:比较消耗资源
介绍:文档对象模型(Document Object Model)
DOM把XML文档映射成一个倒挂的树
解析包:org.w3c.dom
常用接口 | 常用方法 | 返回 |
---|---|---|
Document:表示整个XML文档 | NodeList getElementsByTagName(String Tag) | 按文档顺序返回文档中指定标记名称的所有元素集合 |
Element oreateElement(String tagName) | 创建指定标记名称的元素 | |
Node:该文档树中的单个节点 | NodeList getChidNods() | 获取该元素的所有子节点,返回节点集合 |
Element: XML文档中的一个元素 | String getTagName() | 获取元素名称 |
DOM解析XML文件步骤:
1.创建解析器工厂对象DocumentBuilderFactory
2.通过解析器工厂对象创建解析器对象
3.通过解析器对象调用方法将XML文件转换Document对象
4.通过Document对象去操作XML文件里的数据
DocumentBuilderFactory ddf = DocumentBuilderFactory.newInstance();
try {
//第二步通过解析器工厂对象dbf创建解析器对象
DocumentBuilder db= ddf.newDocumentBuilder();
//第三步:通过解析器对象调用的方法将XML文件转换为Document对象
Document document = db.parse("收藏信息.xml");
System.out.println(document);
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
//定义得到Dcoument方法
public Document getDocument(String uri){
Document document=null;
try {
//创建解析器工厂对象
DocumentBuilderFactory dbf= DocumentBuilderFactory.newInstance();
//通过解析器工厂独享创建解析器对象
DocumentBuilder db = dbf.newDocumentBuilder();
document = db.parse(uri);
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return document;
}
//测试类
public static void main(String[] args) {
//创建XmlDocumentDemo02类对象
XmlDocumentDemo02 xdd = new XmlDocumentDemo02();
//调用getDocument()方法将"收藏信息.xml"文件转换为Document对象
Document document = xdd.getDocument("收藏信息.xml");
//获取数据
NodeList brands =document.getElementsByTagName("Brand");
for (int i = 0; i < brands.getLength(); i++) {// getLength()列表中的节点数。
//Node是一个节点口,节点口包括元素节点,属性节点,文本节点等,而现在我们获取的是brand的节点,所以需要类型转换
Node node = brands.item(i);// 返回集合中的第 index 个项。
Element brand = (Element)node;
String value = brand.getAttribute("name");//通过元素节点的属性名称获取属性的值
System.out.println(value);
}
}
SAX
基于事件解析
适用于大数据量的XML文档
特点:占用资源少,内存消耗小
DOM4J
非常优秀的java XML API
性能非常优异,功能强大
开放源代码
本文含有隐藏内容,请 开通VIP 后查看