最近学习了XML的相关知识,深感其强大。
XML这个技术家族非常庞大。并且与其他技术密不可分。
是我们非常有必要掌握的知识,然后看了两个视频。把XML关于J2EE这方面做了系统的学习。
总结如下:
搭建环境:MyEclipse6.5
使用jar包jdom.jar
下面首先介绍XML文件读取:
首先在项目中找一个XML文件,我就以以下的XML配置文件为例。
新建一个全局配置文件:gobal-configure.xml
<!---->
<?
xml version="1.0" encoding="UTF-8"
?>
<!--
配置数据库信息
-->
<
sys-configure
>
<
jdbc-info
>
<
driver-class-name
>
com.mysql.jdbc.Driver
</
driver-class-name
>
<
url
>
jdbc:mysql://localhost:3306/sy
</
url
>
<
user-name
>
root
</
user-name
>
<
password
>
****
</
password
>
</
jdbc-info
>
<!--
配置DAO
-->
<
beans
>
<
bean
id
="com.sy.dao.ItemDao"
class
="com.sy.dao.impl.ItemDaoImpl"
></
bean
>
</
beans
>
</
sys-configure
>
下面在com.sy.util包中添加JdbcInfo.java注入类
<!---->
package
com.sy.util;
public
class
JdbcInfo {
private
String driverClassName;
private
String url;
private
String userName;
private
String password;
public
String getDriverClassName() {
return
driverClassName;
}
public
void
setDriverClassName(String driverClassName) {
this
.driverClassName
=
driverClassName;
}
public
String getUrl() {
return
url;
}
public
void
setUrl(String url) {
this
.url
=
url;
}
public
String getPassword() {
return
password;
}
public
void
setPassword(String password) {
this
.password
=
password;
}
public
String toString() {
return
"
JdbcInfo {driverClassName=
"
+
driverClassName
+
"
,url=
"
+
url
+
"
,userName=
"
+
userName
+
"
,password=
"
+
password
+
"
}
"
;
}
public
String getUserName() {
return
userName;
}
public
void
setUserName(String userName) {
this
.userName
=
userName;
}
}
下面是读取类:GlobalConfigure.java
<!---->
package
com.sy.util;
import
java.io.IOException;
import
java.util.HashMap;
import
java.util.Iterator;
import
java.util.List;
import
java.util.Map;
import
org.jdom.Document;
import
org.jdom.Element;
import
org.jdom.JDOMException;
import
org.jdom.input.SAXBuilder;
import
org.jdom.xpath.XPath;
import
com.sy.dao.ItemDao;
public
class
GlobalConfigure {
private
static
GlobalConfigure instance
=
new
GlobalConfigure();
private
static
final
String CONFIG_FILE_NAME
=
"
gobal-configure.xml
"
;
private
Element rootElt;
private
JdbcInfo jdbcInfo
=
new
JdbcInfo();
private
Map beanMap
=
new
HashMap();
private
GlobalConfigure(){
SAXBuilder sb
=
new
SAXBuilder();
try
{
Document doc
=
sb.build(Thread.currentThread().getContextClassLoader().getResourceAsStream(CONFIG_FILE_NAME));
this
.rootElt
=
doc.getRootElement();
initJdbcInfo();
initBeans();
}
catch
(JDOMException e) {
//
TODO Auto-generated catch block
e.printStackTrace();
}
catch
(IOException e) {
//
TODO Auto-generated catch block
e.printStackTrace();
}
}
private
static
GlobalConfigure getInstance(){
return
instance;
}
private
void
initJdbcInfo(){
try
{
Element driverClassNameElt
=
(Element)XPath.selectSingleNode(rootElt,
"
//sys-configure/jdbc-info/driver-class-name
"
);
//
System.out.println(driverClassNameElt.getText());
jdbcInfo.setDriverClassName(driverClassNameElt.getText());
Element urlElt
=
(Element)XPath.selectSingleNode(rootElt,
"
//sys-configure/jdbc-info/url
"
);
jdbcInfo.setUrl(urlElt.getText());
Element userNameElt
=
(Element)XPath.selectSingleNode(rootElt,
"
//sys-configure/jdbc-info/user-name
"
);
jdbcInfo.setUserName(userNameElt.getText());
Element passwordElt
=
(Element)XPath.selectSingleNode(rootElt,
"
//sys-configure/jdbc-info/password
"
);
jdbcInfo.setPassword(passwordElt.getText());
}
catch
(JDOMException e) {
//
TODO Auto-generated catch block
e.printStackTrace();
}
}
private
void
initBeans(){
try
{
List beanList
=
XPath.selectNodes(rootElt,
"
//sys-configure/beans/bean
"
);
for
(Iterator iter
=
beanList.iterator();iter.hasNext();){
Element beanElt
=
(Element)iter.next();
String id
=
beanElt.getAttributeValue(
"
id
"
);
String className
=
beanElt.getAttributeValue(
"
class
"
);
//
System.out.println("id="+id+",className="+className);
Object obj
=
Class.forName(className).newInstance();
beanMap.put(id, obj);
}
}
catch
(JDOMException e) {
//
TODO Auto-generated catch block
e.printStackTrace();
}
catch
(InstantiationException e) {
//
TODO Auto-generated catch block
e.printStackTrace();
}
catch
(IllegalAccessException e) {
//
TODO Auto-generated catch block
e.printStackTrace();
}
catch
(ClassNotFoundException e) {
//
TODO Auto-generated catch block
e.printStackTrace();
}
}
public
static
void
main(String[] args){
System.out.println(GlobalConfigure.getInstance().getJdbcInfo());
ItemDao itemDao
=
(ItemDao)GlobalConfigure.getInstance().getBean(ItemDao.
class
);
}
public
JdbcInfo getJdbcInfo() {
return
jdbcInfo;
}
public
Object getBean(Class c){
return
beanMap.get(c.getName());
}
}
这样就可以读取了。
下面是XML文件的导出的类:
<!---->
package
com.sy.util;
import
java.io.FileNotFoundException;
import
java.io.FileOutputStream;
import
java.io.IOException;
import
org.jdom.Attribute;
import
org.jdom.Document;
import
org.jdom.Element;
import
org.jdom.output.XMLOutputter;
public
class
XMLWriter {
/**
* <selects>
* <select>
* <id sid="5">1</id>
* <name>河北省</name>
* </select>
* <select>
* <id>2</id>
* <name>海南省</name>
* </select>
* </selects>
*
@param
args
*/
public
static
void
main(String[] args) {
Element rootElt
=
new
Element(
"
selects
"
);
Element selectElt
=
new
Element(
"
select
"
);
Element idElt
=
new
Element(
"
id
"
);
idElt.addContent(
"
1
"
);
//
设定值
idElt.setAttribute(
new
Attribute(
"
sid
"
,
"
5
"
));
Element valueElt
=
new
Element(
"
name
"
);
valueElt.addContent(
"
河北省
"
);
rootElt.addContent(selectElt);
//
建立父子关系
selectElt.addContent(idElt);
selectElt.addContent(valueElt);
Document doc
=
new
Document(rootElt);
XMLOutputter out
=
new
XMLOutputter();
//
out.setFormat(Format.getCompactFormat().setEncoding("GB2312"));
//
设置编码
String xmlStr
=
out.outputString(doc);
System.out.println(xmlStr);
try
{
out.output(doc,
new
FileOutputStream(
"
D:/java/work2/jdom_xml2/WebRoot/test.xml
"
));
//
导出xml文件在项目根目录
}
catch
(FileNotFoundException e) {
//
TODO Auto-generated catch block
e.printStackTrace();
}
catch
(IOException e) {
//
TODO Auto-generated catch block
e.printStackTrace();
}
}
}
施杨出品
!!!