1.XML简介
XML(EXtensible Markup Language),可扩展标记语言
特点
XML与操作系统、编程语言的开发平台无关
实现不同系统之间的数据交换
作用
数据交互
配置应用程序和网站
Ajax基石
2.XML文档结构
XML
<?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>
3.XML标签
XML文档内容由一系列标签元素组成
<元素名 属性名="属性值">元素内容</元素名>
属性值用双引号包裹
一个元素可以有多个属性
属性值中不能直接包含<、"、&
不建议使用的字符:'、>
4.XML解析器
java
SAXReader saxReader =new SAXReader();
5.XML命名空间
XML命名空间的作用
解决在复杂、大型XML文件中,出现名称相同,但是含义不同的元素
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>
6.DOM解析XML
DOM介绍
文档对象模型(Document Object Model)
DOM把XML文档映射成一个倒挂的树
XML
<book >
<title>三国演义</title>
<author>罗贯中</author>
<price>30元</price>
</book>
7.常用接口介绍
DOM解析包:org.w3c.dom
常用接口 | 常用方法 | 说明 |
---|---|---|
Document:表示整个 XML 文档 | NodeList getElementsByTagName(String Tag) | 按文档顺序返回文档中指定标记名称的所有元素集合 |
Element createElement(String tagName) | 创建指定标记名称的元素 | |
Node:该文档树中的单个节点 | NodeList getChildNodes() | 获取该元素的所有子节点,返回节点集合 |
Element:XML 文档中的一个元素 | String getTagName() | 获取元素名称 |
8.操作XML文件(增删改查)
java
/*
* 新增
*/
public static void main(String[] args) throws Exception {
//创建一个空白document对象
Document newdoc = DocumentHelper.createDocument();
Element root = newdoc.addElement("stus");
Element e1 = root.addElement("stu");
e1.addAttribute("id","1004");
e1.addAttribute("name","老四");
e1.addAttribute("age","18");
Element e2 = root.addElement("stu");
e2.addAttribute("id","1007");
e2.addAttribute("name","老七");
e2.addAttribute("age","19");
Element e3 = root.addElement("stu");
e3.addAttribute("id","1008");
e3.addAttribute("name","老八");
e3.addAttribute("age","18");
OutputFormat of = OutputFormat.createPrettyPrint();
XMLWriter xmlWriter = new XMLWriter(new FileWriter("1.xml"),of);
xmlWriter.write(newdoc);
xmlWriter.close();
}
/*
* 删除
*/
public static void main(String[] args) throws Exception {
//创建解析器类
SAXReader saxReader =new SAXReader();
//读取xml文件
Document doc = saxReader.read("students.xml");
//获得根节点
Element root = doc.getRootElement();
Iterator<Element> it = root.elementIterator();
while (it.hasNext()){
Element str = it.next();
//获得自己对象element,再拿到sage对象下的文本内容
String sage = str.element("sage").getText();
int a =Integer.parseInt(sage);
if (a > 18){
str.getParent().remove(str);
}
}
//将doc 重新保存
OutputFormat of = OutputFormat.createPrettyPrint();
XMLWriter xmlWriter = new XMLWriter(new FileWriter("students.xml"),of);
xmlWriter.write(doc);
xmlWriter.close();
}
/*
* 修改XML文件
*/
public static void main(String[] args) {
try {
//创建解析器类
SAXReader saxReader =new SAXReader();
//读取xml文件
Document doc = saxReader.read("students.xml");
//获得根节点
Element root = doc.getRootElement();
//新增子节点
Element stu = root.addElement("stu");
//给节点添加属性
stu.addAttribute("id","1004");
stu.addElement("sname").setText("老六");
stu.addElement("sage").setText("20");
OutputFormat outputFormat = OutputFormat.createPrettyPrint();
//将doc重新保存
XMLWriter xmlWriter = new XMLWriter(new FileWriter("students.xml"),outputFormat);
xmlWriter.write(doc);//写入
xmlWriter.close();
} catch (Exception e) {
e.printStackTrace();
}
}
/*
* 查询XML文件
*/
public static void main(String[] args) {
try {
//创建解析器类
SAXReader saxReader =new SAXReader();
//读取xml文件
Document doc = saxReader.read("students.xml");
//获得根节点
Element root = doc.getRootElement();
//获得标签名称
System.out.println("根节点名称:" + root.getName());
//获得所有子节点
List<Element> list = root.elements();
for (Element e : list){
//获得当前元素的属性
String id = e.attributeValue("id");
System.out.println("学生学号:" + id);
//获得指定名称的所有子节点
Element sname = e.element("sname");
Element sage = e.element("sage");
//获得元素中的内容
System.out.println("姓名:" + sname.getText());
System.out.println("年龄:" + sage.getText());
//System.out.println("所有子节点名:" + e.getName());
//List<Element> e1 = e.elements();
//for (Element a : e1){
//System.out.println("当前节点写的子节点:" + a.getName());
//}
}
} catch (Exception e) {
e.printStackTrace();
}
}