JDOM操作XML

来源:互联网 发布:产品效果图制作软件 编辑:程序博客网 时间:2024/06/02 17:20

准备工作

官网:http://www.jdom.org/

API:http://www.jdom.org/docs/apidocs/index.html

可扩展标记语言——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>(); //jsonprivate 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);}}


操作


原创粉丝点击