XML配置文件
- XML是一种文件格式,也叫配置文件
- XML是一种可扩展的标记语言,用<>括起来,成对成对的使用
- XML的设计主旨是传输数据,而不是显示数据
XML语法
- 第一行需要声明本文件是XML文件,每个xml文件必需的东西.
<?xml version="1.0" encoding="utf-8" ?>
version是版本号,encoding是编码格式,文本内容和文件的编码必须统一,可以都使用utf-8 - <>表示xml文档中的元素/标签(Element),标签有内容时成对成对出现,没有内容时可以使用单标签
<000>内容</000> --> 有内容的成对标签
<000/> --> 没有内容使用单标签 - 标签可以带有属性,格式: 属性=“属性值” --> id = 1
- xml文档中有且仅有一个根标签
- xml中严格区分大小写
- < !-- 注释内容–> --> 注释
<?xml version="1.0" encoding="utf-8" ?>
<contacts>
<databases>
<driverClassName>com.jdbc.mysql.Driver</driverClassName>
<url>jdbc:mysql://39.106.167.142:3306/user</url>
<username>root</username>
<password>admin</password>
</databases>
</contacts>
XML结构和DOM
- XML结构就是树状结构,从根标签开始开枝散叶,所以要求有且只有一个根标签
- XML是用来做数据传输的,最终是需要读到程序或者保存到文件中的,而从面向对象的角度看XML的各个组成部分都是由一个一个对象来描述的
- XML文件使用Document对象来描述
- 所有标签使用Element对象来描述
- 标签的属性使用Attr来描述
- 文本内容使用Text来描述
- 四种对象都继承自org.w3c.dom.Node类,在XML中一切都是节点
- 把XML加载到内存之后形成一个一个的对象,就叫DOM解析
- 在加载的时候一次性把整个XML文件加载到内存中,形成一棵DOM树(Document对象),之后操作的都是内存中的Document对象,所以如果要保存到磁盘需要做同步操作,将内存中的Document对象存进磁盘,而不仅仅只是在内存中保存.当然一次性把整个XML文件加载到内存可能会出现内存溢出问题,操作XML进行增删查改时虽然很简单,但是由于底层需要进行一步一步解析,所以效率不高.
操作XML配置文件
1. 获取Document对象: 将获取Document对象的方法封装成工具方法,提高代码重用性
public class DBUtil {
private static InputStream is = null;
private static DocumentBuilder documentBuilder = null;
static {
is = Thread.currentThread()
.getContextClassLoader()
.getResourceAsStream("db.xml");
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
try {
documentBuilder = factory.newDocumentBuilder();
} catch (ParserConfigurationException e) {
e.printStackTrace();
}
}
public static Document getDocument() {
Document document = null;
try {
document = documentBuilder.parse(is);
} catch (Exception e) {
e.printStackTrace();
}
return document;
}
}
2. 获取XML文件中的数据
public class DBDemo {
public static void main(String[] args) {
Document document = DBUtil.getDocument();
Element root = document.getDocumentElement();
Element databases = (Element) root.getElementsByTagName("databases").item(0);
Element url = (Element) databases.getElementsByTagName("url").item(0);
String urlTextContent = url.getTextContent();
System.out.println(urlTextContent);
}
}
3. 往XML文件中插入数据(用的不多,写入数据一般都是打开配置文件直接加,不会使用代码加,有需要了解的请留言,我私发源码)