读书人

广告项目:(五) 解析XMl-lt;1gt; dom4j解

发布时间: 2012-08-08 14:32:45 作者: rapoo

广告项目:(5) 解析XMl-<1> dom4j解析

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

???

?

?

读书人网 >XML SOAP

热点推荐