1:代码
package com.dvnchina.itv.advert.utils.xml;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import com..itv.advert.bean.STBVersionBean;
import com..itv.advert.model.Material;
import com..itv.advert.utils.config.DirectoryUtils;
/**
* 获取素材配置文件
*
* @author chennaidong
*
*/
public class MaterialConfig {
/**
* 素材配置文件
*/
private static File MaterialConfigureFile = new File(DirectoryUtils.getSerlvetContextPath()+"/WEB-INF/classes/materialConfig.xml");
/**
* 素材配置DOM节点
*/
private static Document MaterialConfigureDom = null;
/**
* 素材分类MAP集合 - 键值 -"kind"
*/
public static Map<String ,ArrayList<Material>> matkindMap = null;
/**
* 素材类型MAP集合 - 键值 -"type"
*/
public static Map<String ,ArrayList<Material>> matTypeMap = null;
/**
* 机顶盒版本MAP集合 - 键值 -"box"
*/
public static HashMap<String, ArrayList<STBVersionBean>> boxVersionMap = null;
/**
* 加载配置文件,初始化信息
*/
static{
SAXReader reader = new SAXReader();
try {
MaterialConfigureDom = reader.read(MaterialConfigureFile);
initData();
} catch (DocumentException e) {
e.printStackTrace();
}
}
/**
* 初始化数据
*/
private static void initData(){
if(MaterialConfigureDom == null){
reloadConfig();
}
//开始加载
initMaterialKind();
initMaterialType();
initBoxVersion();
}
/**
* 重新加载配置文件,初始化
*/
private static void reloadConfig(){
SAXReader reader = new SAXReader();
try {
MaterialConfigureDom = reader.read(MaterialConfigureFile);
initData();
} catch (DocumentException e) {
e.printStackTrace();
}
}
/**
* 开始解析--素材分类
*/
@SuppressWarnings("unchecked")
private static void initMaterialKind(){
matkindMap = new HashMap<String, ArrayList<Material>>();
String xpath="//kind";
List<Element> nodes = MaterialConfigureDom.selectNodes(xpath);
ArrayList<Material> materialKindList = new ArrayList<Material>();
for(Element element:nodes){
Material materialBean = new Material();
String key = element.attributeValue("key");
String name = element.attributeValue("name");
materialBean.setId(Integer.valueOf(key));
materialBean.setName(name);
materialKindList.add(materialBean);
}
matkindMap.put("kind", materialKindList);
}
/**
* 开始解析--素材类型
*/
@SuppressWarnings("unchecked")
static void initMaterialType(){
matTypeMap = new HashMap<String, ArrayList<Material>>();
String xpath2="//type";
List<Element> node2s = MaterialConfigureDom.selectNodes(xpath2);
ArrayList<Material> materialTypeList = new ArrayList<Material>();
for(Element element:node2s){
Material materialBean = new Material();
String key = element.attributeValue("key");
String name = element.attributeValue("name");
materialBean.setId(Integer.valueOf(key));
materialBean.setName(name);
materialTypeList.add(materialBean);
}
matTypeMap.put("type", materialTypeList);
}
/**
* 开始解析--机顶盒版本
*/
@SuppressWarnings("unchecked")
static void initBoxVersion(){
boxVersionMap = new HashMap<String, ArrayList<STBVersionBean>>();
String xpath2="//box";
List<Element> node2s = MaterialConfigureDom.selectNodes(xpath2);
ArrayList<STBVersionBean> versionList = new ArrayList<STBVersionBean>();
for(Element element:node2s){
STBVersionBean version = new STBVersionBean();
String key = element.attributeValue("key");
String name = element.attributeValue("version");
version.setId(key);
version.setName(name);
versionList.add(version);
}
boxVersionMap.put("box", versionList);
}
}
2:xml的文件
<?xml version="1.0" encoding="UTF-8"?>
<config>
<material>
<kind key="0" name="视频" />
<kind key="1" name="图片" />
<kind key="2" name="文字" />
<kind key="3" name="压缩包" />
<type key="0" name="标清" />
<type key="1" name="高清" />
<box key="1" name="a" version="标清版本" />
<box key="2" name="b" version="普通高清版本" />
<box key="3" name="c" version="云高清版本" />
</material>
<position>
<positionbean key="0" name="开机广告位" />
<positionbean key="1" name="切换频道广告位" />
<positionbean key="2" name="切换音量广告位" />
<positionbean key="3" name="频道列表广告位" />
<positionbean key="4" name="频道轮询广告位" />
<positionbean key="5" name="收藏频道广告位" />
</position>
</config>
3:使用解析后的数据
private static final Map<String, ArrayList<Material>> mKindMap = MaterialConfig.matkindMap;
private static final Map<String, ArrayList<Material>> mTypeMap = MaterialConfig.matTypeMap;
4:依赖的解析引擎
通过dom4j 想解析xml,必须依赖一个“解析引擎”,jaxen-1.1-beta-9.jar
分享到:
相关推荐
Java解析XML时,dom4j是一个非常流行的库,它提供了灵活且强大的API来处理XML文档。dom4j-1.6.1.jar是这个库的一个版本,发布于2005年,它支持XML的读取、写入、操作以及查询功能。在本文中,我们将深入探讨dom4j的...
1. **导入DOM4J库**:在Java项目中,首先需要添加DOM4J的依赖。如果你使用的是Maven,可以在pom.xml文件中添加如下依赖: ```xml <dependency> <groupId>dom4j</groupId> <artifactId>dom4j</artifactId> ...
这篇名为“Jdom解析嵌套XML<一>”的文章可能涉及了如何使用JDOM处理包含复杂嵌套结构的XML文件。 首先,我们来了解一下JDOM的基本概念。JDOM的主要目标是为Java开发者提供一个高性能、内存中且基于树的API,以便...
**DOM4J解析XML实例详解** 在Java编程中,处理XML文档是一项常见的任务。DOM4J是一个非常流行的、强大的Java XML API,它提供了灵活且高效的方式来解析、创建、修改XML文档。本文将深入探讨如何使用DOM4J进行XML...
解析XML的第一步是引入DOM4J库。如果你使用Maven,可以在pom.xml文件中添加以下依赖: ```xml <dependency> <groupId>org.dom4j</groupId> <artifactId>dom4j</artifactId> <version>2.1.3</version> </...
在Java中,解析XML有多种方法,主要包括DOM、SAX和DOM4J。下面将详细介绍这三种解析方式及其对应的jar包。 1. DOM (Document Object Model) DOM是一种基于树形结构的XML解析方法,它将整个XML文档加载到内存中,...
本篇将通过一个实际的例子来探讨如何使用Dom4j解析XML配置文件。 首先,我们需要了解DOM4J的基本概念。DOM(Document Object Model)是一种用于表示XML或HTML文档的标准模型,而Dom4j是基于DOM的,但它比标准的DOM...
### DOM4J解析XML详解 #### 一、DOM4J简介与特性 DOM4J是一个由dom4j.org开发的开源XML解析包,专为Java平台设计,它不仅支持DOM、SAX和JAXP标准,还巧妙地融入了Java集合框架,使其成为Java开发者在处理XML数据时...
1. **dom4j解析XML**: - **创建XML文档**:通过`DocumentFactory`可以创建`Document`对象,进而添加元素、属性等。 - **读取XML文档**:使用`DocumentHelper.parseText()`或`SAXReader.read()`方法解析XML文本或...
Java提供了多种解析XML的API,其中DOM(Document Object Model)和DOM4j是常用的两种方法。本文将详细介绍这两种方式以及如何使用它们进行XML文档的增、删、改查操作。 一、DOM解析 DOM解析器将整个XML文档加载到...
在本示例中,我们将深入探讨如何使用DOM4J解析XML文件,以`CacheInit.java`作为我们的核心代码示例,并参考`emailTemplateConfig.xml`作为实际操作的对象。 首先,让我们了解XML(eXtensible Markup Language)。...
5. **创建XML文件**:除了解析XML,Dom4J也支持创建新的XML文档。首先创建`Document`,然后添加元素和属性。 ```java Document newDocument = DocumentFactory.getInstance().createDocument(); Element ...
1. 引入DOM4J库:在Java项目中,你需要添加DOM4J依赖。如果你使用Maven,可以在pom.xml文件中添加如下依赖: ```xml <dependency> <groupId>dom4j</groupId> <artifactId>dom4j</artifactId> <version>1.6.1</...
本文将详细介绍如何使用dom4j解析XML,并创建XML文档结构。 首先,我们需要引入dom4j库。如果你使用的是Maven项目,可以在pom.xml文件中添加以下依赖: ```xml <dependency> <groupId>dom4j</groupId> ...
1. **解析XML**:DOM4J可以读取XML文件,将其转换为一个树形结构,即Document对象。解析器有SAX和DOM两种模式,SAX是事件驱动的,适用于大文件,而DOM则将整个文档加载到内存中,适合小文件。 2. **创建XML**:DOM4...
在本文中,我们将深入探讨如何使用DOM4J解析XML和SOAP报文,以及如何从中提取所需字段。 首先,理解XML是非常重要的。XML(可扩展标记语言)是一种用于标记数据的语言,允许我们以结构化的方式存储和传输信息。DOM4...
1. **引入DOM4j依赖**:在`pom.xml`文件中,添加DOM4j的依赖项,这样Maven会在构建时自动下载并管理这个库。 ```xml <dependencies> <dependency> <groupId>org.dom4j</groupId> <artifactId>dom4j</artifactId>...
1. **DOM4J安装与引入**:在Java项目中使用DOM4J,首先需要将DOM4J的jar包引入到项目的类路径中。如果你使用的是Maven或Gradle,可以在构建文件中添加相应的依赖。对于Maven,可以添加以下依赖: ```xml ...
在实际开发中,DOM4J常用于读取配置文件、解析XML格式的数据交换,或者与Web服务交互。由于其优秀的性能和丰富的功能,DOM4J 1.6.1版本至今仍被许多开发者所采用,特别是在那些需要高效处理XML的项目中。 总之,DOM...