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
分享到:
相关推荐
Dom4j解析XML文档.doc Dom4j解析XML文档.doc Dom4j解析XML文档.doc Dom4j解析XML文档.doc
<br><br>/**<br><br>* @author Holen Chen<br><br>*/<br><br>public class Dom4jDemo {<br> public Dom4jDemo() {<br> }<br><br> /**<br><br> * 建立一个XML文档,文档名由输入属性决定<br><br> * @param filename 需...
java解析XML dom4j dom4j-1.6.1.jar dom4j.jarjava解析XML dom4j dom4j-1.6.1.jar dom4j.jar
DOM4J jar包 所有的包 xml解析 dom4j-1.6.1 dom4j-2.0.2 dom4j-2.1.1 导入直接使用
XML解析四种解析方式 DOM SAX JDOM DOM4J
1、xml文档解析 2、 dom4j解析xml 3、实现xml文件解析 xml字符串解析 xml MAP键值对解析 4、实现xml写入与生成文件
解析XML所需的jar dom4j-1.6.1.jar dom4j-2.0.2.jar dom4j-2.1.1.jar 注意:dom4j-2.1.1.jar需要jdk8
DOM4j类包,已经打包,放在工程项目的BIN下
使用 dom4j 解析 XML dom4j 解析 XML dom4j解析xml
dom4j是一种解析XML文档的开放源代码XML框架。本文介绍如何使用包含在dom4j中的解析器创建并修改XML文档。dom4j API包含一个解析XML文档的工具。本文中将使用这个解析器创建一个示例XML文档,然后使用同一个解析器...
java dom解析xml <?xml version="1.0" encoding="UTF-8"?> <File> <Head> <FileVersion>010000</FileVersion> <FileLength>00000CC3</FileLength> <FileTime>20100629173405</FileTime> <Key...
java解析xml并导入数据库(dom4j).doc
C# XML入门经典——C#编程人员必备的XML技能 <br>作者:[美]Stewart Fraser, Steven 著,毛尧飞,崔伟 译 出版社:清华大学出版社 出版时间:2003年11月 <br>第1章 在C#中使用XML的原因<br><br>1.1 使用XML的原因<br...
dom4j解析xml实例,dom4j解析xml实例,dom4j解析xml实例,
dom4j解析XML必备jardom4j解析XML必备jardom4j解析XML必备jardom4j解析XML必备jar
dom4j解析xml文件代码示例 dom4j解析xml文件代码示例 dom4j解析xml文件代码示例
很详细的文档 可以借鉴下 希望对你有帮助
Dom4j解析XML及中文问题Dom4j解析XML及中文问题Dom4j解析XML及中文问题Dom4j解析XML及中文问题Dom4j解析XML及中文问题Dom4j解析XML及中文问题
Dom4j遍历解析XMLDom4j遍历解析XML
dom4j是一个简单的开源库,用于处理XML、 XPath和XSLT,它基于Java平台,使用Java的集合框架,全面集成了DOM,SAX和JAXP。