`
sillycat
  • 浏览: 2482452 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Digester快速解析XML数据

    博客分类:
  • JAVA
阅读更多
Digester快速解析XML数据

使用到了org.apache.commons.digester.Digester
一些配置和一些字典型的数据,用XML的形式存放在classpath里面,比较方便,开发也比较快速。

先看看要解析的XML文件helpContent_data.xml:
<helpColumn>
<!-- 首页 -->
<helpContent pageUrl="index.jsp" pageCode="1" linkUrl="#" title="如何注册?" desn="首页。&lt;br />2) 点击“注册”" />
<helpContent pageUrl="index.jsp" pageCode="1" linkUrl="#" title="如何添加新设备?" desn="添加新设备成功。" />
<helpContent pageUrl="index.jsp" pageCode="1" linkUrl="#" title="如何实现设备报警?" desn="进入“报警配置”编辑。" />
<helpContent pageUrl="index.jsp" pageCode="1" linkUrl="#" title="如何进入用户管理系统?" desn="进入“系统”" />
<helpContent pageUrl="index.jsp" pageCode="1" linkUrl="#" title="提供哪些服务?如何申请服务?" desn="点击“服务”" />
</helpColumn>

就是一个符合XML规范的XML文件。

另外定义了两个DO来对应helpColumn根和helpContent元素
HelpContent.java如下:
package com.megaeyes.ipcamera.dao.model;

public class HelpContent {
private Integer id;
private String pageUrl;
private String pageCode;
private String linkUrl;
private String title;
private String desn;
}

就是一个纯净的POJO。对应了XML里面helpContent的每一个元素。

HelpColumn.java如下:
package com.megaeyes.ipcamera.dao.model;

import java.util.ArrayList;
import java.util.List;

public class HelpColumn {
private String name;
List helpContents = new ArrayList();
public void addHelpContent(HelpContent helpContent) {
   helpContents.add(helpContent);
}
public List getHelpContents() {
   return helpContents;
}
public String getName() {
   return name;
}
public void setName(String name) {
   this.name = name;
}
}

数据和存放数据的类都准备好了,下面就是解析XML的实现类了,XmlSaxManagerImpl.java:

package com.megaeyes.ipcamera.service.impl;

import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

import org.apache.commons.digester.Digester;
import org.xml.sax.SAXException;

import com.megaeyes.ipcamera.dao.model.HelpColumn;
import com.megaeyes.ipcamera.dao.model.HelpContent;
import com.megaeyes.ipcamera.service.iface.XmlSaxManager;

public class XmlSaxManagerImpl extends BaseManager implements XmlSaxManager {

private static final String isConfigFile = "helpContent_data.xml";

private HelpColumn helpColumn;

public void init() {
   Digester digester = new Digester();
   digester.setValidating(false);
   digester.addObjectCreate("helpColumn",
     "com.megaeyes.ipcamera.dao.model.HelpColumn");
   digester.addSetProperties("helpColumn");
   digester.addObjectCreate("helpColumn/helpContent",
     "com.megaeyes.ipcamera.dao.model.HelpContent");
   digester.addSetProperties("helpColumn/helpContent");
   digester.addSetNext("helpColumn/helpContent", "addHelpContent",
     "com.megaeyes.ipcamera.dao.model.HelpContent");
   try {
    InputStream in = this.getClass()
    .getClassLoader().getResourceAsStream(isConfigFile);
    // 采用classloader的方式,把xml文件放classpath里面就可以读到
    helpColumn = (HelpColumn) digester.parse(in);
   } catch (IOException ioe) {
    ioe.printStackTrace();
   } catch (SAXException se) {
    se.printStackTrace();
   }
}

public HelpColumn getHelpColumn() {
   return helpColumn;
}

public List getHelpContents(String pageCode) {
   List reList = null;
   if (helpColumn != null && helpColumn.getHelpContents() != null
     && !helpColumn.getHelpContents().isEmpty()) {
    reList = new ArrayList();
    for (int i = 0; i < helpColumn.getHelpContents().size(); i++) {
     HelpContent content = (HelpContent) helpColumn
       .getHelpContents().get(i);
     reList.add(content);
    }
   }
   return reList;
}

public static void main(String[] args) {
   XmlSaxManagerImpl impl = new XmlSaxManagerImpl();
   impl.init();
   List list = impl.getHelpContents("1");
   for(int i = 0;i<list.size();i++){
    HelpContent content = (HelpContent)list.get(i);
    System.out.println(content.getTitle());
    System.out.println(content.getDesn());
   }
}

}
分享到:
评论

相关推荐

    digester jar 包

    java 解析xml文件 digester 将xml转换为java数据 digester jar 包

    用到digester项目,直接解析存入数据库

    解析使用的xml文件在"参与者基础数据-4月.zip",sql语句就不贴了,如果是测试digester只需将dao层改一下,不要连接数据库,不同数据库创表好麻烦,如果需要存入数据库可以自行创建。

    JOX实现XML和JavaBean相互转化

    用来读写xml的组件很多,比如dom4j, sax, JDom,Digester等,但是很多组件用起来很麻烦,今天给大家推荐一个超级简单的组件JOX, JOX是一套用户XML document和Java beans之间进行数据传递的JAVA类库。...

    基于XML配置的动态数据查询技术

    首先通过Apache Digester解析表单的XML结构化配置,将实例化的配置信息交由动态查询引擎处理,动态查询引擎结合配置信息通过SQL、HQL、接口查询获取数据.最后将配置和数据以JSON格式传给客户端处理,以二次封装改进...

    web开发常用jar

    Hibernate使用dom4j解析XML配置文件和XML映射元文件。必需的。 ehcache-1.2.jar Hibernate可以使用不同cache缓存工具作为二级缓存。EHCache是缺省的cache缓存工具。如果没有其它的可选缓存工具,则为必需的。 ...

    Xanot an Xml to Object Mapper-开源

    Xanot是XOM(从Xml到Object Mapper)。 与众所周知的Apache Digester非常相似。 但是它使用了Java 5注释功能。 这样,这些类可以“告诉”解析器如何将xml数据映射到其对象模型中。

    达内java培训目录

    XML XML语法、XML解析(SAX、DOM)、Dom4j组件、Digester组件。 熟练掌握XML语法规则;理解DOM模型;熟悉Java对XML的各种解析方式。 实训项目三:T-DMS V2项目开发 第四阶段(以T-NetCTOSS电信计费系统贯穿) ...

    java开发常用jar包

    Hibernate使用dom4j解析XML配置文件和XML映射元文件。必需的。 ehcache-1.2.jar Hibernate可以使用不同cache缓存工具作为二级缓存。EHCache是缺省的cache缓存工具。如果没有其它的可选缓存工具,则为必需的。 ...

    Jakarta commons docs API CHM 格式

    commons-digester XML 文件到 Java 对象的映射机制 commons-discovery 提供工具来定位资源 (包括类) ,通过使用各种模式来映射服务/引用名称和资源名称。 commons-el 提供在JSP2.0规范中定义的EL表达式的解释器. ...

    比较全面的:Jakarta-commons jar包(附: chm参考手册 & 资源简介)

    commons-digester XML 文件到 Java 对象的映射机制 commons-discovery 提供工具来定位资源 (包括类) ,通过使用各种模式来映射服务/引用名称和资源名称。 commons-el 提供在JSP2.0规范中定义的EL表达式的解释器. ...

Global site tag (gtag.js) - Google Analytics