XML简介
XML(EXtensible Markup Language),可扩展标记语言
特点
XML与操作系统、编程语言的开发平台无关
实现不同系统之间的数据交换
作用
数据交互
配置应用程序和网站
Ajax基石
XML文档结构
声明:<?xml version="1.0" encoding="UTF-8"?>
文档元素描述信息
<?xml version="1.0" encoding="UTF-8"?>
<books>
<!--图书信息 -->
<book id="bk101">
<author>王珊</author>
<title>.NET高级编程</title>
<description>包含C#框架和网络编程等</description>
</book>
<book id="bk102">
<author>李明明</author>
<title>XML基础编程</title>
<description>包含XML基础概念和基本作用</description>
</book>
</books>
XML标签
XML文档内容由一系列标签元素组成:<元素名 属性名=“属性值”>元素内容</元素名>
空元素:
<name> </name>
<name></name>
<name/>
注意:1.属性值用双引号包裹 2.一个元素可以有多个属性 3.属性值中不能直接包含<、“、& 4.不建议使用的字符:‘、>
XML编写注意事项
所有XML元素都必须有结束标签
XML标签对大小写敏感
XML必须正确的嵌套
同级标签以缩进对齐
元素名称可以包含字母、数字或其他的字符
元素名称不能以数字或者标点符号开始
元素名称中不能含空格
命名空间
<?xml version="1.0" encoding="UTF-8"?>
<batchCompany xmlns="http://www.Aptech_edu.ac"
xmlns:tea="http://www.tea.org">
<batch-list>
<batch type="thirdbatch">第三批次</batch>
<batch tea:type="thirdbatch">第三批茶</batch>
<batch>午班批次</batch>
</batch-list>
</batchCompany>
除非带有前缀,否则属性属于所属的元素的命名空间
作用:解决在复杂、大型XML文件中,出现名称相同,但是含义不同的元素
比如:
<?xml version="1.0" encoding="UTF-8"?>
<cameras xmlns:canon="http://www.canon"
xmlns:nikon="http://www.nikon.com">
<canon:camera prodID="P663" name="Camera傻瓜相机"/>
<nikon:camera prodID=“K29B3” name=“Camera超级35毫米相机"/>
</cameras>
XML解析器
解析器类型
非验证解析器---检查文档格式是否良好
验证解析器---使用DTD检查文档的有效性
解析XML技术
DOM
基于XML文档树结构的解析
适用于多次访问的XML文档
特点:比较消耗资源
SAX
基于事件的解析
适用于大数据量的XML文档
特点:占用资源少,内存消耗小
DOM4J
非常优秀的Java XML API
性能优异、功能强大
开放源代码
DOM解析XML
DOM介绍
文档对象模型(Document Object Model)
DOM把XML文档映射成一个倒挂的树
<book >
<title>三国演义</title>
<author>罗贯中</author>
<price>30元</price>
</book>
常用接口介绍
DOM解析包:org.w3c.dom
DOM解析XML文件步骤
1.创建解析器工厂对象
2.解析器工厂对象创建解析器对象
3.解析器对象指定XML文件创建Document对象
4.以Document对象为起点操作DOM树
<?xml version="1.0" encoding="UTF-8"?>
<PhoneInfo>
<Brand name="华为">
<Type name="U8650" />
<Type name="HW123" />
<Type name="HW321" />
</Brand>
<Brand name="苹果">
<Type name="iPhone4" />
</Brand>
</PhoneInfo>
import java.io.IOException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.xml.sax.SAXException;
public class XmlDocumentDemo02 {
//定义一个方法实现获取Document对象操作
public Document getDocument(String url){
Document document = null;
//创建解析器工厂对象
DocumentBuilderFactory bdf = DocumentBuilderFactory.newInstance();
//通过解析器工厂对象创建解析器对象
try {
DocumentBuilder db = bdf.newDocumentBuilder();
document = db.parse(url);
} catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return document;
}
}
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class Test {
public static void main(String[] args) {
//创建XMLDocumentDemo02对象
XmlDocumentDemo02 xdd = new XmlDocumentDemo02();
//调用getDocument(string url)将"收藏信息.xml"文件转换成Document对象
Document document = xdd.getDocument("收藏信息.xml");
//获取数据
NodeList brands = document.getElementsByTagName("Brand");
for (int i = 0; i < brands.getLength(); i++) {
//Node是一个节点接口,节点包括元素节点,属性节点,文本节点,而现在我们获取的是brand节点,所以需要进行类型转换
Node node = brands.item(i);
Element brand = (Element)node;
String value=brand.getAttribute("name");
System.out.println(value);
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。