📄 jdomutil.java
字号:
package com;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;
/**
* 使用这工具的说明:该类对应的XML文件最好不要存在重复元素, 如果存在重复元素,那么元素的子元素名为name的值一定要不一样
* 这个类是一个读取XML配置文件的类
*
* @author root
*
*/
public class JdomUtil {
// 要读取的XML文件的路径/文件名
private static String fileName = "src/com/MyXml.xml";
// 根节点
private static Element root = null;
/**
* return 根节点(root)
*/
private static Element getRootElement() {
try {
InputStreamReader isr = new InputStreamReader(new FileInputStream(
fileName));
/*
* 建立解析器
* 用了其他的解析器(要加入其他的包(xml-apis.jar)):(速度200mm)xerces:org.apache.xerces.parsers.SAXParser
* 其实用默认解析器(不用加入其他的包)也可以解析 (速度100mm) jdk自带的60mm(这里的速度是是一个参考)
*/
SAXBuilder builder = new SAXBuilder(
"org.apache.xerces.parsers.SAXParser");
Document doc = builder.build(isr);
root = doc.getRootElement();// 根节点
isr.close();
} catch (Exception e) {
e.printStackTrace();
}
return root;
}
/**
* 根据根元素下的元素名及该元素的子元素名返回该元素的子元素的值
*
* @param parent根元素下的元素名
* @param child
* 根元素下的元素的子元素名
* @return 根元素下的元素的子元素的值
*/
public static String getElementValue(String parent, String child) {
getRootElement();
String value = "";
List<Element> elementList = root.getChildren(parent);
value = elementList.get(0).getChildTextTrim(child);
return value;
}
/**
* 如果根元素存在2个或以上一样的子元素的话,就用他们不同name的值来区别他们 根据根元素下的元素名及该元素的子元素名和值,返回该元素其他子元素的值
*
* @param parent根元素下的元素名
* @param child
* 根元素下的元素的第一个子元素名(即name)
* @param name_value
* 根元素下的元素的子元素的值
* @return Map<元素名,元素值>
*/
public static Map<String, String> getElementValues(String parent,
String child, String name_value) {
Map<String, String> values = new HashMap<String, String>();
getRootElement();
List<Element> elementList = root.getChildren(parent);
for (Element element : elementList) {
if (name_value.equalsIgnoreCase(element.getChildTextTrim(child))) {
List<Element> children = element.getChildren();
for (Element e : children) {
values.put(e.getName(), e.getTextTrim());
}
}
}
return values;
}
// 测试
public static void main(String[] args) {
String name = getElementValue("person", "name");
System.out.println(name);
Map<String, String> values = getElementValues("person", "name", "kyo");
System.out.println(values.get("age"));
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -