使用JDOM解析XML文档

简介:
    说到XML,恐怕我们最深刻的印象也就是满眼的配置文件了,其实使用XML来交换数据也是比较常见的,我想就是因为它的灵活性好通用性强便于传输等原因吧。这样,对XML文件的解析就显得特别重要了,就好像我们的JDBC从数据库拿数据一样。解析xml文件的技术有很多,我通常都是使用JDOM。
     我要讲的这个例子是基于这样简易Bean工厂类思想,把类及其实现的接口配置到XML中,工厂(其实就是一个Map)基于这个配置文件来存储类的实例,对于Map中的每个元素都是类的一个实例,其中接口作键,利用反射生成相应的对象作值,使用者可以把此Map作为一个容器来取得目标类的实例。
1.XML文件:configure.xml
<? xml  version ="1.0"  encoding ="UTF-8" ?> 
< sys-configure > 
   < jdbc-info > 
     < driver-class-name > 
      oracle.jdbc.driver.OracleDriver 
     </ driver-class-name > 
     < url >jdbc:oracle:thin:@127.0.0.1:1521:test </ url > 
     < user-name >scott </ user-name > 
     < password >yf123 </ password > 
   </ jdbc-info > 
   < beans > 
     < bean  id ="com.yangfei.jdom.read.TestDao" 
       class ="com.yangfei.jdom.read.TestDaoImpl" > 
     </ bean > 
     < bean  id ="com.yangfei.jdom.read.TestService" 
       class ="com.yangfei.jdom.read.TestServiceImpl" > 
     </ bean > 
    <!--  可以把所有的需要创建的类配置进来 --> 
   </ beans > 
</ sys-configure >
 
2.事例接口及其实现类:
package com.yangfei.jdom.read; 

public  interface TestDao { 
   public  void test(); 


public  class TestDaoImpl  implements TestDao { 
   public  void test() { 
    System.out.println( "print from TestDaoImpl"); 
  } 


public  interface TestService { 
   public  void t(); 


public  class TestServiceImpl  implements TestService { 
   public  void t() { 
    System.out.println( "print from TestService"); 

  } 
}
 
3.解析类:Test.java
public  class Test { 
  @SuppressWarnings( "unchecked"
   public  static  void main(String[] args) { 
    Map beanMap =  new HashMap(); // 用来存放从xml文件中取出的id和classname对用的对象 
    SAXBuilder sb =  new SAXBuilder(); 
    Document doc =  null
     try { 
      doc = sb.build(Thread.currentThread() 
          .getContextClassLoader() 
          .getResourceAsStream( "configure.xml")); // 以相对目录来读取文件 
      Element rootElt = doc.getRootElement(); 
      List<Element> Elts = XPath.selectNodes(rootElt, "//sys-configure/beans/bean"); 
      for (Element elt : Elts) { 
        String id = elt.getAttributeValue("id"); 
        String className = elt.getAttributeValue("class"); 
        System.out.println(id + "@@@" + className); 
        // 取出之后生成实现类的具体对象,以接口为键,以实现类对象为值存放在Map里 
        Object obj = Class.forName(className).newInstance(); 
        beanMap.put(id, obj);// 以后使用类对象时就可以访问Map来取得对象了. 
      } 
    } catch (JDOMException e) { 
      e.printStackTrace(); 
    } catch (Exception e) { 
      e.printStackTrace(); 
    } 
  } 
}


     本文转自NightWolves 51CTO博客,原文链接: http://blog.51cto.com/yangfei520/299661 ,如需转载请自行联系原作者



相关文章
|
2天前
|
XML Web App开发 JavaScript
XML DOM 解析器
浏览器内置的XML解析器将XML转换为XML DOM,便于JavaScript操作。通过XMLHttpRequest加载XML文档,如`books.xml`,创建HTTP请求并获取响应,将响应转化为DOM对象。示例展示了在不同浏览器中创建XMLHttpRequest对象并加载XML的过程。
|
2天前
|
XML 数据格式
XML Schema 复杂元素类型详解:定义及示例解析
在XML Schema(XSD)中,复杂元素包含其他元素和/或属性,分为4类:空元素、仅含元素、仅含文本和既含元素也含文本。定义复杂元素可通过直接声明或引用预定义的复杂类型。复杂空元素仅含属性,而仅含元素的类型则只包含其他子元素。XSD提供了`&lt;xs:sequence&gt;`、`&lt;xs:all&gt;`、`&lt;xs:choice&gt;`等指示器来规定元素顺序和出现次数,以及`&lt;xs:attributeGroup&gt;`和`&lt;xs:group&gt;`来组织元素和属性。
163 7
|
4天前
|
XML Web App开发 JavaScript
XML DOM 解析器
浏览器内置的XML解析器将XML转换为JavaScript可操作的DOM对象。通过XMLHttpRequest加载XML文档,如`books.xml`,创建HTTP请求并获取响应,然后将响应解析为XML DOM,以便用JavaScript访问和处理。示例代码展示了在不同浏览器中如何使用XMLHttpRequest加载XML。
|
4天前
|
XML Web App开发 JavaScript
XML DOM 解析器
XML解析器将XML转换为JavaScript可操作的DOM对象,使得浏览器(大多内置此解析器)能读取和处理XML。通过XMLHttpRequest对象,可以加载XML文档,如示例所示,创建HTTP请求获取&quot;books.xml&quot;,然后将响应转化为DOM对象以进行访问和操作。
|
6天前
|
XML 数据格式
小米备份descript.xml文件
小米备份descript.xml文件
25 0
|
6天前
|
XML Java 数据库连接
mybatis中在xml文件中通用查询结果列如何使用
mybatis中在xml文件中通用查询结果列如何使用
42 0
|
6天前
|
XML JavaScript 前端开发
xml文件使用及解析
xml文件使用及解析
|
6天前
|
SQL
Mybatis.xml文件中大于小于等于
Mybatis.xml文件中大于小于等于
12 0
|
6天前
|
XML 关系型数据库 MySQL
【Mysql】有关数据库中一对多/一对一,多对一xml中文件映射问题
【Mysql】有关数据库中一对多/一对一,多对一xml中文件映射问题
21 0
|
6天前
|
XML C# 数据格式
使用C#操作XML文件
使用C#操作XML文件
14 0

推荐镜像

更多