`
chennaid2
  • 浏览: 53006 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
  • b_l_east: 在主动模式下,如果有多个客户端,服务器对每一个客户端均使用20 ...
    ftp

广告项目:(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

   

 

 

分享到:
评论

相关推荐

    java解析XML dom4j dom4j-1.6.1.jar

    Java解析XML时,dom4j是一个非常流行的库,它提供了灵活且强大的API来处理XML文档。dom4j-1.6.1.jar是这个库的一个版本,发布于2005年,它支持XML的读取、写入、操作以及查询功能。在本文中,我们将深入探讨dom4j的...

    利用DOM4J解析SOAP的简单示例

    1. **导入DOM4J库**:在Java项目中,首先需要添加DOM4J的依赖。如果你使用的是Maven,可以在pom.xml文件中添加如下依赖: ```xml &lt;dependency&gt; &lt;groupId&gt;dom4j&lt;/groupId&gt; &lt;artifactId&gt;dom4j&lt;/artifactId&gt; ...

    Jdom解析嵌套XML<一>

    这篇名为“Jdom解析嵌套XML&lt;一&gt;”的文章可能涉及了如何使用JDOM处理包含复杂嵌套结构的XML文件。 首先,我们来了解一下JDOM的基本概念。JDOM的主要目标是为Java开发者提供一个高性能、内存中且基于树的API,以便...

    dom4j解析xml实例

    **DOM4J解析XML实例详解** 在Java编程中,处理XML文档是一项常见的任务。DOM4J是一个非常流行的、强大的Java XML API,它提供了灵活且高效的方式来解析、创建、修改XML文档。本文将深入探讨如何使用DOM4J进行XML...

    多层镶嵌xml解析.zip

    解析XML的第一步是引入DOM4J库。如果你使用Maven,可以在pom.xml文件中添加以下依赖: ```xml &lt;dependency&gt; &lt;groupId&gt;org.dom4j&lt;/groupId&gt; &lt;artifactId&gt;dom4j&lt;/artifactId&gt; &lt;version&gt;2.1.3&lt;/version&gt; &lt;/...

    解析XML的dom、sax和dom4j的jar包

    在Java中,解析XML有多种方法,主要包括DOM、SAX和DOM4J。下面将详细介绍这三种解析方式及其对应的jar包。 1. DOM (Document Object Model) DOM是一种基于树形结构的XML解析方法,它将整个XML文档加载到内存中,...

    Dom4j解析配置文件与xml小例子

    本篇将通过一个实际的例子来探讨如何使用Dom4j解析XML配置文件。 首先,我们需要了解DOM4J的基本概念。DOM(Document Object Model)是一种用于表示XML或HTML文档的标准模型,而Dom4j是基于DOM的,但它比标准的DOM...

    dom4j解析xml详解

    ### DOM4J解析XML详解 #### 一、DOM4J简介与特性 DOM4J是一个由dom4j.org开发的开源XML解析包,专为Java平台设计,它不仅支持DOM、SAX和JAXP标准,还巧妙地融入了Java集合框架,使其成为Java开发者在处理XML数据时...

    使用dom4j和jaxen解析xml

    1. **dom4j解析XML**: - **创建XML文档**:通过`DocumentFactory`可以创建`Document`对象,进而添加元素、属性等。 - **读取XML文档**:使用`DocumentHelper.parseText()`或`SAXReader.read()`方法解析XML文本或...

    Java解析XML文档(DOM与DOM4j两种方式)

    Java提供了多种解析XML的API,其中DOM(Document Object Model)和DOM4j是常用的两种方法。本文将详细介绍这两种方式以及如何使用它们进行XML文档的增、删、改查操作。 一、DOM解析 DOM解析器将整个XML文档加载到...

    dom4j解析xml文件代码示例

    在本示例中,我们将深入探讨如何使用DOM4J解析XML文件,以`CacheInit.java`作为我们的核心代码示例,并参考`emailTemplateConfig.xml`作为实际操作的对象。 首先,让我们了解XML(eXtensible Markup Language)。...

    Dom4J解析XML源代码

    5. **创建XML文件**:除了解析XML,Dom4J也支持创建新的XML文档。首先创建`Document`,然后添加元素和属性。 ```java Document newDocument = DocumentFactory.getInstance().createDocument(); Element ...

    Dom4j-XML.rar_dom4j xml

    1. 引入DOM4J库:在Java项目中,你需要添加DOM4J依赖。如果你使用Maven,可以在pom.xml文件中添加如下依赖: ```xml &lt;dependency&gt; &lt;groupId&gt;dom4j&lt;/groupId&gt; &lt;artifactId&gt;dom4j&lt;/artifactId&gt; &lt;version&gt;1.6.1&lt;/...

    使用dom4j进行解析XML

    本文将详细介绍如何使用dom4j解析XML,并创建XML文档结构。 首先,我们需要引入dom4j库。如果你使用的是Maven项目,可以在pom.xml文件中添加以下依赖: ```xml &lt;dependency&gt; &lt;groupId&gt;dom4j&lt;/groupId&gt; ...

    DOM4J jar包 xml解析 所有的dom4j-1.6.1 dom4j-2.0.2 dom4j-2.1.1包 导入直接使用

    1. **解析XML**:DOM4J可以读取XML文件,将其转换为一个树形结构,即Document对象。解析器有SAX和DOM两种模式,SAX是事件驱动的,适用于大文件,而DOM则将整个文档加载到内存中,适合小文件。 2. **创建XML**:DOM4...

    dom4j解析xml和soap报文

    在本文中,我们将深入探讨如何使用DOM4J解析XML和SOAP报文,以及如何从中提取所需字段。 首先,理解XML是非常重要的。XML(可扩展标记语言)是一种用于标记数据的语言,允许我们以结构化的方式存储和传输信息。DOM4...

    使用Maven管理项目,实现DOM4j操作XML文件

    1. **引入DOM4j依赖**:在`pom.xml`文件中,添加DOM4j的依赖项,这样Maven会在构建时自动下载并管理这个库。 ```xml &lt;dependencies&gt; &lt;dependency&gt; &lt;groupId&gt;org.dom4j&lt;/groupId&gt; &lt;artifactId&gt;dom4j&lt;/artifactId&gt;...

    dom4j解析XML所需要的包

    1. **DOM4J安装与引入**:在Java项目中使用DOM4J,首先需要将DOM4J的jar包引入到项目的类路径中。如果你使用的是Maven或Gradle,可以在构建文件中添加相应的依赖。对于Maven,可以添加以下依赖: ```xml ...

    dom4j_dom4j1.6.1安装包_

    在实际开发中,DOM4J常用于读取配置文件、解析XML格式的数据交换,或者与Web服务交互。由于其优秀的性能和丰富的功能,DOM4J 1.6.1版本至今仍被许多开发者所采用,特别是在那些需要高效处理XML的项目中。 总之,DOM...

Global site tag (gtag.js) - Google Analytics