虽然前面的文章提到了JDOM在解析XML文件方面存在种种缺陷,但至少在一般的小文件来说还是可以考虑的,比如我的项目中用到的XML文件就很小很小
这里只需添加个jdom.jar包就够了,至于是哪个版本自己可以上网去下
TargetExcel.xml
<?xml version="1.0" encoding="gbk"?>
<linekong>
<project name="CRM2001">
<property name="x">0</property>
<property name="y">2</property>
</project>
<project name="CRM2002">
<property name="x">0</property>
<property name="y">3</property>
</project>
<project name="CRM2003">
<property name="x">0</property>
<property name="y">4</property>
</project>
<project name="CRM3004">
<property name="x">0</property>
<property name="y">5</property>
</project>
<project name="CRM3005">
<property name="x">0</property>
<property name="y">6</property>
</project>
<project name="CRM3002">
<property name="x">0</property>
<property name="y">7</property>
</project>
<project name="CRM3003">
<property name="x">0</property>
<property name="y">8</property>
</project>
<project name="CRM4002">
<property name="x">0</property>
<property name="y">9</property>
</project>
<project name="CRM4008">
<property name="x">0</property>
<property name="y">10</property>
</project>
<project name="CRM4007">
<property name="x">0</property>
<property name="y">11</property>
</project>
<project name="CRM4005">
<property name="x">0</property>
<property name="y">12</property>
</project>
<project name="CRM4006">
<property name="x">0</property>
<property name="y">13</property>
</project>
<project name="CRM4001">
<property name="x">0</property>
<property name="y">14</property>
</project>
<project name="CRM3006">
<property name="x">0</property>
<property name="y">15</property>
</project>
<project name="TAG0001_01">
<property name="x">0</property>
<property name="y">16</property>
</project>
<project name="TAG0001_02">
<property name="x">0</property>
<property name="y">17</property>
</project>
<project name="TAG0002">
<property name="x">0</property>
<property name="y">19</property>
</project>
<project name="TAG0003">
<property name="x">0</property>
<property name="y">20</property>
</project>
<project name="TAG0004">
<property name="x">0</property>
<property name="y">21</property>
</project>
<project name="TAG0005">
<property name="x">0</property>
<property name="y">22</property>
</project>
<project name="TAG0006">
<property name="x">0</property>
<property name="y">23</property>
</project>
<project name="TAG0007">
<property name="x">0</property>
<property name="y">24</property>
</project>
<project name="TAG0008">
<property name="x">0</property>
<property name="y">25</property>
</project>
<project name="TAG0009">
<property name="x">0</property>
<property name="y">26</property>
</project>
<project name="TAG0010">
<property name="x">0</property>
<property name="y">27</property>
</project>
<project name="TAG0011">
<property name="x">0</property>
<property name="y">28</property>
</project>
<project name="TAG0012">
<property name="x">0</property>
<property name="y">29</property>
</project>
<project name="TAG0013">
<property name="x">0</property>
<property name="y">30</property>
</project>
<project name="TAG0014">
<property name="x">0</property>
<property name="y">31</property>
</project>
<project name="TAG0015">
<property name="x">0</property>
<property name="y">32</property>
</project>
<project name="TAG0016">
<property name="x">0</property>
<property name="y">33</property>
</project>
<project name="TAG0017">
<property name="x">0</property>
<property name="y">34</property>
</project>
<project name="TAG0018">
<property name="x">0</property>
<property name="y">35</property>
</project>
<project name="TAG0019">
<property name="x">0</property>
<property name="y">36</property>
</project>
<project name="TAG0020">
<property name="x">0</property>
<property name="y">37</property>
</project>
<project name="TAG0021">
<property name="x">0</property>
<property name="y">38</property>
</project>
</linekong>
对应处理程序
package com.cn.util.common;
import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.log4j.Logger;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
import com.cn.pojo.TargetExcelPojo;
import com.cn.util.timer.TestTimerTaskServlet;
/**
* @author meisong
* 这里用到的是JDOM技术
*/
public class PropertiesCache {
private final static Logger log = org.apache.log4j.Logger
.getLogger(PropertiesCache.class);
private Log logger = LogFactory.getLog(PropertiesCache.class);
private Map cache;
private static PropertiesCache instance = new PropertiesCache();
public PropertiesCache() {
cache = Collections.synchronizedMap(new HashMap());// �õ�һ��ͬ����HashMap
}
//���õ�̬
public static PropertiesCache getInstance() {
return instance;
}
public String getProperties(String projectName, String propertiesName) {
String key = projectName + propertiesName;
if (cache.containsKey(propertiesName)) {
String properties = (String) cache.get(key);
return properties;
} else {
//
String properties = parseXML(projectName, propertiesName);
cache.put(key, properties);
return properties;
}
}
private String parseXML(String projectName, String propertiesName) {
logger.info("解析XML文件");
SAXBuilder sb = new SAXBuilder();
Document doc = null;
try {
// String home = System.getenv("TOMCAT_HOME");
// System.out.println(home);
// 读取应用配置文件
// 用于读取同步指标数据
URL urlAppCfg = PropertiesCache.class.getClassLoader().getResource(
"AppConfig.xml");
doc = sb.build(urlAppCfg);
System.out.println(doc.toString()+"---");
} catch (IOException e) {
log.error(e.getMessage() + "--");
} catch (JDOMException e) {
log.error(e.getMessage() + "--ww");
}
String value = null;
Element root = doc.getRootElement();
List projects = root.getChildren("project");
for (int i = 0; i < projects.size(); i++) {
Element project = (Element) projects.get(i);
if (project.getAttributeValue("name").equals(projectName)) {
List properties = project.getChildren("property");
for (int j = 0; j < properties.size(); j++) {
Element property = (Element) properties.get(j);
if (property.getAttributeValue("name").equals(
propertiesName)) {
value = property.getText();
break;
}
}
break;
}
}
return value;
}
}
分享到:
相关推荐
这个例子展示了如何使用JDOM读取、修改并保存XML文档。通过JDOM,我们可以轻松地处理XML数据,无论是简单的文档还是复杂的结构,都能得心应手。在实际项目中,根据需求选择适当的解析器,结合JDOM提供的API,可以...
JDOM 是一个专门为Java设计的XML处理库,它结合了SAX和DOM的优点,提供了一种高效且易于使用的API来创建、解析和操作XML文档。JDOM的主要目标是简化XML处理,通过利用Java语言的强大特性,如方法重载、集合和映射,...
JDOM的核心理念是提供一个与平台无关、高性能、易于使用的API,让开发者能够以Java对象的形式来操作XML。 ### JDOM基本结构 JDOM的主要类包括`Element`、`Attribute`、`Document`和`Builder`。`Element`代表XML...
在示例代码中,可以看到JDOM在创建和操作XML文档时的直观性。例如,通过new Element("GREETING")创建一个元素,并通过setText方法为其设置文本内容。然后可以将这个元素用作Document的根元素。通过newDocument()和...
下面是一个简单的 JDOM 使用示例,演示如何读写 XML 文件。在这个例子中,我们有一个名为 `MyXml.xml` 的 XML 文件,包含两个书籍条目,每个条目有书名、作者、出版社、价格和出版日期等信息。为了操作这个 XML 文件...
下面是一个简单的示例,展示如何使用JDOM创建一个XML文档: ```java import org.jdom2.Document; import org.jdom2.Element; public class JDOMExample { public static void main(String[] args) { // 创建...
以下是一个简单的JDOM示例,展示如何使用JDOM创建一个XML文档: ```java import org.jdom2.Document; import org.jdom2.Element; public class JDOMExample { public static void main(String[] args) { ...
下面是一个简单的示例,展示如何使用JDOM解析和打印XML文档的元素信息: ```java import org.jdom2.*; import org.jdom2.input.SAXBuilder; import org.jdom2.output.Format; import org.jdom2.output.XMLOutputter...
#### 五、JDOM的使用示例 1. **文档创建**:可以通过`Document`类创建一个新的XML文档。 ```java Document doc = new Document(); Element root = new Element("root"); doc.setRootElement(root); ``` 2. **...
下面是一个使用SAXBuilder解析XML文件的示例: ```java import org.jdom2.Document; import org.jdom2.input.SAXBuilder; public class JdomExample { public static void main(String[] args) { try { ...
以下是一个简单的例子,演示如何使用JDOM解析XML文件: ```java import org.jdom2.Document; import org.jdom2.Element; import org.jdom2.input.SAXBuilder; public class JDomExample { public static void main...
在`www.pudn.com.txt`文件中,可能包含了一些关于这些JDOM版本的下载信息、教程链接或者使用示例,对于初学者来说是一个很好的参考资料。 总的来说,JDOM作为Java平台上的XML处理库,提供了简单而直接的API,使得...
压缩包中的 `jdom.chm` 文件是 JDOM 的官方帮助文档,包含了详细的 API 参考、教程和示例。对于开发者来说,这是了解和学习 JDOM 的重要资源。文档详细解释了每个类、接口和方法的用法,帮助开发者快速上手。 总结...
2. **例子**:这些示例代码通常展示了如何使用JDOM进行XML操作,包括解析XML文件、创建新的XML文档、修改现有文档、查询元素和属性等。通过学习这些例子,开发者可以快速上手并应用到自己的项目中。 3. **帮助文档*...
以下是一个简单的例子,展示如何使用 JDOM 读取和写入 XML 文档。首先,我们有一个名为 `MyXml.xml` 的 XML 文件: ```xml <书库> <书> <书名>Java 编程入门书名> <作者>张三作者> <出版社>电子出版社出版社> ...
`jdom-1.1.zip`是这个版本的源代码或二进制包,通常包含库的jar文件、文档、示例代码等资源。`jdom-1.1.jar`则是JDOM-1.1的核心库文件,可以直接引入到Java项目中,以便进行XML操作。 在JDOM中,XML文档被表示为一...
以上示例演示了如何使用XPath表达式`//Class[@no='0212']/name`来获取指定班级的学生姓名。 #### 五、日志记录 程序中使用了`Logger`类来进行日志记录: ```java Logger log = Logger.getLogger(JdomDemo.class); `...
尽管 JDom 的官方文档可能相对较少,但通过实践和示例代码,开发者可以深入理解其核心功能。 在 JDom 中,XML 文档的核心对象是 `Document`,它是整个 XML 结构的根。创建 XML 文档通常涉及到以下几个步骤: 1. **...
下面将详细介绍如何使用JDOM进行XML文件的读取和写入。 ### XML文件的读取 1. **引入JDOM库**:首先,你需要在项目中引入JDOM的依赖。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```xml ...
- **jdom-2.0.1-contrib.jar**:可能包含了一些额外的贡献代码或示例。 - **lib**:可能是一个包含依赖库的目录,确保 JDOM 正常运行所需。 - **jdom-2.0.1-junit.jar**:可能包含了 JDOM 的测试框架和测试用例,...