什么是 XML
XML 指可扩展标记语言(EXtensible Markup Language),编写XML就是编写标签,与HTML非常类似,扩展名为.xml。XML具有很好的人机可读性。
XML与HTML的异同
- XML与HTML非常相似,都是编写标签
- XML没有预定义标签,HTML存在大量预定义标签
- XML重在保存与传输数据,HTML用于显示信息
XML的用途
- Java程序的配置描述文件
- 用于保存程序产生的数据
- 网络间的数据传输
XML文档结构
- 第一行必须是XML声明
<?xml version="1.0" encoding="UTF-8"?>
- 有且只有一个根节点
- XML标签的书写规则与HTML 相同
XML标签书写规则
- 合法的标签名
标签名要有意义
建议使用英文小写字母,单词之间使用-分割
建议多级标签不要存在重名的情况
<!-- 错误示例-->
<abc>1223</abc>
<名称$>李四</名称$>
<name><name>李四</name></name>
<!-- 正确示例-->
<shop-cart><item>相册</item></shop-cart>
- 适当的注释与缩进
- 合理使用属性
<?xml version="1.0" encoding="UTF-8"?>
<shop-cart>
<item sn="12324" category="电器">
<name>电视机</name>
<price>2000</price>
<num>2</num>
</item>
<item sn="1324" category="食品">
<name>面包</name>
<price>20</price>
<num>2</num>
</item>
</shop-cart>
- 特殊字符与CDATA标签
标签体中出现"<"、" > "特殊字符,会破坏文档结构
解决办法一:实体引用
实体引用 | 对应符号 | 说明 |
---|---|---|
&It; | < | 小于 |
> | > | 大于 |
& | & | 和号 |
' | ’ | 单引号 |
" | " | 双引号 |
解决办法二:CDATA标签
<!-- 内部文本不被xml解析-->
<![CDATA[
xxxxxxxx
xxxxxxx
]]>
- 有序的子元素
Java与XML
在Java里面我们使用的是Dom4j解析XML。
Dom4j是一个易用的、开源的库,用于XML,XPath和XSLT。它应用于Java平台,采用了Java集合框架并完全支持DOM,SAX和JAXP。
- Java读取XML
package com.study.dom4j;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.List;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class Dom4j {
public void readXML(){
String file = "E:/JavaWeb/myxml/src/1.xml";
SAXReader reader = new SAXReader();
try {
Document document = reader.read(file);
Element root = document.getRootElement();
List<Element> employees = root.elements("part");
for(Element employee : employees) {
Attribute att = employee.attribute("id");
System.out.println(att.getText());
System.out.println(employee.elementText("name"));
System.out.println(employee.elementText("age"));
System.out.println(employee.elementText("sex"));
}
}catch(DocumentException e) {
}
}
public static void main(String[] args) {
Dom4j dom4j = new Dom4j();
dom4j.readXML();
}
}
- Java写入XML
package com.study.dom4j;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.List;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class Dom4j {
public void writeXML(){
String file = "E:/JavaWeb/myxml/src/1.xml";
SAXReader reader = new SAXReader();
try {
Document document = reader.read(file);
Element root = document.getRootElement();
Element part = root.addElement("part");
part.addAttribute("id", "8888");
part.addAttribute("name", "选项三");
part.addElement("name").setText("王二麻子");
part.addElement("age").setText("33");
part.addElement("sex").setText("女");
Writer writer = new OutputStreamWriter(new FileOutputStream(file), "UTF-8");
document.write(writer);
writer.close();
}catch(DocumentException | IOException e) {
System.out.println(e);
}
}
public static void main(String[] args) {
Dom4j dom4j = new Dom4j();
dom4j.writeXML();
}
}
总结
现在我们基本已经熟悉了XML的一些基本知识,也学会了如何使用Java的Dom4j来操作XMl文件,后面我们在开发Java的过程中就会使用XML配置我们的项目。