准备工作
可扩展标记语言——eXtensible Markup Language
用户可以自己定义语言标记,只要有开始和闭合标签即可。
xsl装饰、修饰xml的显示结果。
dtd约束xml文件中的标记。
XML的优点
1、xml可以让数据和标记分离。
2、异质信息互通
3、机器语言
4、用交流语言替代html装饰语言
5、简单易用
6、可以自定义、可扩展
XML和HTML比较
比较内容 | HTML | XML |
可扩展性 | 不具有扩展性、标记固定 | 是元标记语言,可以定义新标记,用户可以自定义标记 |
侧重点 | 侧重于信息的表现形式为什么格式被关注 | 侧重于结构化的描述信息,数据是什么为XML所关注 |
语法 | 不严格(嵌套、配对) | 严格嵌套、配对,并按照DTD要求输出 |
可读性、可维护性 | 难于阅读和维护 | 结构清晰,便于阅读维护 |
数据本身、显示 | 数据和显示合为一处 | 数据与显示分离 |
重用性 | 低 | 可重用性高 |
JDOM操作XML
读取
* getChildren方法可以获取所有子元素
* getChildren(elName)可以获取所有名称为elName的子节点
* getAttributeValue可以获取指定属性的值
* getChildText可以获取子节点的文本值
XML文件:
<?xml version="1.0" encoding="UTF-8"?>
<datasources default="ds_sqlserver2k5">
<!-- sqlserver2000 -->
<datasource name="ds_sqlserver2k">
<driver>net.sourceforge.jtds.jdbc.Driver</driver>
<url>jdbc:jtds:sqlserver://localhost:1433;DatabaseName=WabacusDemoDB</url>
<user>sa</user>
<password>111111</password>
<property name="max_size">20</property>
<property name="min_size">5</property>
<property name="timeout">100</property>
<property name="max_statements">100</property>
<property name="idle_test_period">50</property>
<property name="acquire_increment">2</property>
</datasource>
<!-- sqlserver2005及以上 -->
<datasource name="ds_sqlserver2k5" >
<driver>net.sourceforge.jtds.jdbc.Driver</driver>
<url>jdbc:jtds:sqlserver://127.0.0.1:1433;DatabaseName=brilliant_zz_3d</url>
<user>sa</user>
<password>sa</password>
<property name="max_size">20</property>
<property name="min_size">5</property>
<property name="timeout">100</property>
<property name="max_statements">100</property>
<property name="idle_test_period">50</property>
<property name="acquire_increment">2</property>
</datasource>
<!-- oracle -->
<datasource name="ds_oracle" >
<driver>oracle.jdbc.driver.OracleDriver</driver>
<url>jdbc:oracle:thin:@localhost:1521:WabacusDemoDB</url>
<user>scott</user>
<password>tiger</password>
<property name="max_size">20</property>
<property name="min_size">5</property>
<property name="timeout">100</property>
<property name="max_statements">100</property>
<property name="idle_test_period">50</property>
<property name="acquire_increment">2</property>
</datasource>
<!-- mysql -->
<datasource name="ds_mysql" >
<driver>com.mysql.jdbc.Driver</driver>
<url><![CDATA[jdbc:mysql://localhost/wabacusdemodb?useUnicode=true&characterEncoding=GBK]]></url>
<user>root</user>
<password>111111</password>
<property name="max_size">20</property>
<property name="min_size">5</property>
<property name="timeout">100</property>
<property name="max_statements">100</property>
<property name="idle_test_period">50</property>
<property name="acquire_increment">2</property>
</datasource>
</datasources>
JAVA代码:
package com.brilliant.xml;
/**
* 操作xml文件的类
* fph
* 2013-08-28
*/
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.JDOMException;
import org.jdom2.input.SAXBuilder;
import com.brilliant.tool.JsomDao;
public class xMLOperation {
private String defaultdb = ""; //默认的数据库连接
private dbeneity db = new dbeneity();
private List<dbeneity> dblist = new ArrayList<dbeneity>(); //json
private String data = "";
/**
* 读取xml文件信息
* return jsonstring
*/
public String readXMLContent(String defaultdbtype) {
SAXBuilder builder = new SAXBuilder();
try {
Document doc = builder.build(new File("src/com/brilliant/xml/dbconfig.xml"));
Element rootEl = doc.getRootElement();
defaultdb = defaultdbtype == null?rootEl.getAttributeValue("default"):defaultdbtype;
System.out.println(defaultdb);
// 获得所有子元素
List<Element> list = rootEl.getChildren();
for (Element el : list) {
// 获取name属性值
String name = el.getAttributeValue("name");
//选取数据库的信息
if(defaultdb.equals(name)){
// 获取子元素driver、url、user、password文本值
db.setDriver(el.getChildText("driver") == null?"0":el.getChildText("driver").toString());
db.setUrl(el.getChildText("url") == null?"0":el.getChildText("url").toString());
db.setUser(el.getChildText("user") == null?"0":el.getChildText("user").toString());
db.setUser(el.getChildText("password") == null?"0":el.getChildText("password").toString());
System.out.println(el.getChildText("driver"));
System.out.println(el.getChildText("url"));
System.out.println(el.getChildText("user"));
System.out.println(el.getChildText("password"));
dblist.add(db);
// 转换为数据结果
data = JsomDao.list2String(dblist);
break;
}else{
continue;
}
}
} catch (JDOMException e1) {
e1.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return data;
}
public static void main(String[] args){
xMLOperation hao23 = new xMLOperation();
hao23.readXMLContent(null);
}
}