JDOM操作XML

准备工作



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

}


操作


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值