import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.howbuy.core.util.StringUtil;
import com.howbuy.trade.dto.CorpMerchantDto;
/**
* @ClassName: CorpMerchantUtil
* @Description: 合作商户信息操作工具类
* @date 2013-4-27 上午10:46:48
*
*/
public class CorpMerchantUtil {
/**
* logger
*/
private final Logger logger = LoggerFactory.getLogger(this.getClass());
/**
* instance
*/
private static CorpMerchantUtil instance;
private final static String fileName = "corpMerchant.xml";
private static Map<String, CorpMerchantDto> corpMerchantsMap;
private static String currentVersion = "";
private CorpMerchantUtil() {
loadCorpMerchants();
}
/**
* getInstance
* @return CorpMerchantUtil
*/
public static CorpMerchantUtil getInstance() {
if(null == instance || isUpdateCorpMerchants()) {
instance = new CorpMerchantUtil();
}
return instance;
}
/**
* getCorpMerchantsMap
* @return Map<String, CorpMerchantDto>
*/
public Map<String, CorpMerchantDto> getCorpMerchantsMap() {
return corpMerchantsMap;
}
/**
* 是否存在指定商户代码
* @param corpID 商户代码
* @return boolean true:是,false:否
*/
public boolean isExistsCorpMerchantByCorpID(String corpID) {
if(StringUtil.isEmpty(corpID)) {
return false;
}
return corpMerchantsMap.containsKey(corpID);
}
/**
* 根据商户代码获取商户信息
* @param corpID 商户代码
* @return CorpMerchantDto 商户信息
*/
public CorpMerchantDto getCorpMerchantByCorpID(String corpID) {
if(StringUtil.isEmpty(corpID) || !corpMerchantsMap.containsKey(corpID)) {
return null;
}
return corpMerchantsMap.get(corpID);
}
/**
* 是否需要更新商户列表
* @return boolean
*/
private static boolean isUpdateCorpMerchants() {
boolean isUpdate = false;
SAXReader saxReader = new SAXReader();
Document document;
try {
document = saxReader.read(Thread.currentThread().getContextClassLoader().getResource(fileName));
Element root = document.getRootElement();
Attribute attribute = root.attribute("version");
if(null != attribute) {
String version = attribute.getValue();
if(!currentVersion.equals(version)) {
isUpdate = true;
}
}
} catch (DocumentException e) {
e.printStackTrace();
}
return isUpdate;
}
/**
* 加载查询条件内容
*/
private void loadCorpMerchants() {
logger.info("******************** Load cooperation merchants*********************");
corpMerchantsMap = new HashMap<String, CorpMerchantDto>();
SAXReader saxReader = new SAXReader();
Document document;
try {
document = saxReader.read(Thread.currentThread().getContextClassLoader().getResource(fileName));
Element root = document.getRootElement();
Attribute attribute = root.attribute("version");
String version = attribute.getValue();
currentVersion = version;
for(Iterator iter = root.elementIterator(); iter.hasNext();) {
Element element = (Element)iter.next();
CorpMerchantDto corpMerchantDto = new CorpMerchantDto();
Attribute attributeOfCorpID = element.attribute("corpID");
Attribute attributeOfCoopID = element.attribute("coopID");
Attribute attributeOfActID = element.attribute("actID");
corpMerchantDto.setCorpID(attributeOfCorpID.getValue());
corpMerchantDto.setCoopID(attributeOfCoopID.getValue());
corpMerchantDto.setActID(attributeOfActID.getValue());
corpMerchantDto.setMerchantName(element.getText());
corpMerchantsMap.put(attributeOfCorpID.getValue(), corpMerchantDto);
}
} catch (DocumentException e) {
e.printStackTrace();
}
}
/**
* test
* @param args
* void
*/
public static void main(String[] args) {
Map<String, CorpMerchantDto> map = CorpMerchantUtil.getInstance().getCorpMerchantsMap();
for(Entry<String, CorpMerchantDto> entry : map.entrySet()) {
System.out.println("corpID = " + entry.getValue().getCorpID());
System.out.println("merchantName = " + entry.getValue().getMerchantName());
}
}
}
xml
<?xml version="1.0" encoding="UTF-8"?>
<merchants version="1.0">
<merchant corpID="000001" coopID="W20130701" actID="HD0001">盈盈理财</merchant>
</merchants>
public class CorpMerchantDto implements Serializable {
/**
* @Fields serialVersionUID: 2005927276049639976L
*/
private static final long serialVersionUID = 2005927276049639976L;
/**
* 商户代码
*/
private String corpID;
/**
* 商户名称
*/
private String merchantName;
/**
* 合作代码
*/
private String coopID;
/**
* 活动代码
*/
private String actID;
/**
* @return the corpID
*/
public String getCorpID() {
return corpID;
}
/**
* @param corpID the corpID to set
*/
public void setCorpID(String corpID) {
this.corpID = corpID;
}
/**
* @return the merchantName
*/
public String getMerchantName() {
return merchantName;
}
/**
* @param merchantName the merchantName to set
*/
public void setMerchantName(String merchantName) {
this.merchantName = merchantName;
}
/**
* @return the coopID
*/
public String getCoopID() {
return coopID;
}
/**
* @param coopID the coopID to set
*/
public void setCoopID(String coopID) {
this.coopID = coopID;
}
/**
* @return the actID
*/
public String getActID() {
return actID;
}
/**
* @param actID the actID to set
*/
public void setActID(String actID) {
this.actID = actID;
}
相关推荐
`xmlread`用于读取XML文件并将其转换为一个文档对象模型(DOM)树,而`xmlwrite`则可以将DOM树写回到XML文件。DOM树是一种数据结构,它代表了XML文件的整个内容,允许我们遍历和修改文件的各个部分。 例如,假设...
### JS读取XML文件并获取文件内容 #### 知识点概述 在现代Web开发中,JavaScript(简称JS)常被用于处理各种数据格式,包括XML。XML(可扩展标记语言)是一种常用的标记语言,主要用于结构化数据的存储与传输。...
本篇文章将深入探讨如何使用jQuery来读取XML,并通过实例详细解析相关知识点。 一、jQuery.parseXML()函数 在jQuery中,首先我们需要将XML字符串转换为XML DOM对象。这可以通过使用`jQuery.parseXML()`函数来实现...
在Asp.net中,读取并处理XML页面信息...通过以上知识点,开发者可以在Asp.net中轻松地从URL读取XML页面,并处理其中的数据,实现与远程服务的数据交换。理解并熟练运用这些技术对于构建功能丰富的Web应用程序至关重要。
以下是如何在JSP中读取XML文件的详细步骤,结合描述中的"xmlSearch"文件名,我们可以推测这是一个搜索功能的实现。 首先,我们需要在JSP页面中引入处理XML的库,通常是Java API for XML Processing (JAXP),它包含...
本教程将深入探讨如何使用TinyXML解析器在C++中读取XML文件。 TinyXML是一个小型、轻量级的开源库,设计用于在C++中解析XML文档。它的主要优点在于简单易用,同时保持了良好的性能。下面我们将详细介绍如何使用Tiny...
读取XML - `xmlread`: 这个函数用于从XML文件中读取数据,返回一个XML DOM(Document Object Model)对象。DOM是一种树形结构,表示XML文档的所有元素和属性。 - `xmlstruct`: 该函数将DOM对象转换为Matlab结构体,...
本篇文章将详细介绍如何使用C#来读取XML文件,并通过具体的案例进行演示。 首先,我们要了解XML文件的基本结构。如提供的示例所示,XML文件由一系列的元素组成,每个元素可能包含子元素和属性。在给定的XML文件中,...
在本篇文章中,我们将深入探讨如何在C#中读取XML文件,解析其内容,并进行必要的数据操作。 ### C#中读取XML文件 #### 1. 获取XML DataSet 在C#中,`DataSet`是一种用于存储从数据库或XML文件中获取的数据的内存...
读取XML文件是许多软件项目中的常见需求,例如配置文件、数据存储或网络通信。TinyXML库是一个小巧且易于使用的C++库,专门设计用于解析和操作XML文档。下面将详细介绍如何利用C++和TinyXML库来读取XML文件。 1. **...
总的来说,通过JavaScript读取XML文件需要异步加载XML数据,然后使用DOM解析XML字符串。在实际项目中,还可以考虑使用jQuery、axios等库来简化XML处理。同时,理解XML和DOM的概念对于JavaScript开发者来说是非常重要...
2. **读取XML文件**:使用`SAXBuilder`类解析XML文件,创建一个`Document`对象,这是JDOM中的XML文档模型。 ```java File xmlFile = new File("path_to_your_xml_file"); SAXBuilder builder = new SAXBuilder(); ...
首先,MATLAB提供了一个名为`xmlread`的函数,它用于读取XML文件并返回一个XMLDocument对象。在提供的代码中,`xmlread`函数的输入参数是XML文件的路径,例如`infilename`。如果文件读取成功,`xmlread`会返回一个...
Python 读取 XML 文件 Python 读取 XML 文件是 Python 编程中的一种常见...使用 Python 读取 XML 文件可以使用 xml.dom.minidom 模块,並使用 parse() 函数打开 XML 文件,然后使用文档对象来访问 XML 文件的元素。
4. **读取XML数据** - 对于元素,可以使用`XMLElement::Value()`获取元素的文本内容。 - 对于属性,可以使用`XMLAttribute::Value()`获取属性值。 - 对于文本节点,使用`XMLText::Value()`获取文本内容。 5. **...
2. 使用`SAXBuilder`的`build`方法读取XML文件,返回一个`Document`对象。 3. 通过`Document`对象访问XML文档的元素和属性。 示例代码如下: ```java import org.jdom2.*; import org.jdom2.input.SAXBuilder; ...
这个实例将讲解如何使用Ajax来读取XML文件,从而实现无刷新的效果,提高用户体验。 首先,我们需要了解XML(Extensible Markup Language)。XML是一种用于标记数据的语言,它结构清晰、易于解析,并且可以跨平台、...
本篇文章将详细讲解如何在Web环境中读取XML文档,并实现分页显示数据的方法。 首先,我们需要理解XML的基本概念。XML是一种自描述性的语言,它的结构清晰,易于机器解析和人类阅读。XML文档由元素、属性、文本内容...
在标题中提到的“C#读取XML文件”是本文档的中心内容。描述部分重复了标题,没有提供额外的信息。标签部分为空,没有提供辅助分类或关键词。从给定的部分内容中,可以总结出一系列关于使用C#语言读取XML文件的技术点...
其中,`parse()`函数解析XML文件并返回一个ElementTree对象,`getroot()`方法返回XML文档的根元素。 3. **创建数据结构**: 我们需要定义一个函数,将XML元素转换为字典,以便于pandas处理。 ```python def xml...