DOM4J 问题,以下是XML文件 ,我在读取XML文件的时候,不能将两个配置都读取出来,不知道大家有没办法public class HandleXml { private static URL url = Thread.currentThread().getContextClassLoader().getResource("");
private static Element root;
private static List<RegService> regList = new ArrayList<RegService>();
private static RegService regService;
/**
*
* 返回一个root
* @return
*/
public static Element getRootElement(){
SAXReader saxReader = new SAXReader();
Document document;
try {
document = saxReader.read(new File("src/properties.xml"));
root = document.getRootElement();
return root;
} catch (DocumentException e) {
e.printStackTrace();
return null;
}
}
/**
*
* 遍历子节点的结构
* @param root
* @return
*/
public static List<RegService> getElementList(Element root){
List elements = root.elements();
int count = 1;
if(elements.size() != 0){
regService = new RegService();
for(Iterator it = elements.iterator();it.hasNext();){
Element elem = (Element)it.next();
getElementList(elem);
String ServiceName = getElementValue(elem, "ServiceName");
String Driver = getElementValue(elem, "Driver");
String Url = getElementValue(elem, "Url");
String UserName = getElementValue(elem, "UserName");
String Password = getElementValue(elem, "Password");
if(ServiceName != null){
regService.setServiceName(getElementValue(elem, "ServiceName"));
}
if(Driver != null){
regService.setDriver(getElementValue(elem, "Driver"));
}
if(Url != null){
regService.setUrl(getElementValue(elem, "Url"));
}
if(UserName != null){
regService.setUserName(getElementValue(elem, "UserName"));
}
if(Password != null){
regService.setPassword(getElementValue(elem, "Password"));
}
if(elem.getName().equals("configure")){
count++;
if(count%2 == 0){
regList.add(regService);
}
regService = new RegService();
}
}
}
return regList;
}
public static String getElementValue(Element elem,String title){
String flag = elem.getName();
if(flag.equals(title)){
return elem.getData().toString();
}else{
return null;
}
}
/**
*
* 根据BaseType查询,相关数据库配置信息
*
*/
public static void main(String args[]){
root = getRootElement();
List<RegService> regList = getElementList(root);
for(RegService regService : regList){
System.out.println(regService.getDriver());
System.out.println(regService.getPassword());
System.out.println(regService.getServiceName());
System.out.println(regService.getUserName());
}
}
}//=====以下是XML文件 ,我在读取XML文件的时候,不能将两个配置都读取出来,不知道大家有没办法<?xml version="1.0" encoding="UTF-8"?>
<service>
<configure BaseType="Mysql">
<ServiceName>test</ServiceName>
<Driver>com.mysql.jdbc.Driver</Driver>
<Url>jdbc:mysql://localhost:3306/test</Url>
<UserName>root</UserName>
<Password>sa</Password>
</configure>
<configure BaseType="Mysql">
<ServiceName>test</ServiceName>
<Driver>com.mysql.jdbc.Driver</Driver>
<Url>jdbc:mysql://localhost:3306/test</Url>
<UserName>root</UserName>
<Password>sa</Password>
</configure>
</service>
private static Element root;
private static List<RegService> regList = new ArrayList<RegService>();
private static RegService regService;
/**
*
* 返回一个root
* @return
*/
public static Element getRootElement(){
SAXReader saxReader = new SAXReader();
Document document;
try {
document = saxReader.read(new File("src/properties.xml"));
root = document.getRootElement();
return root;
} catch (DocumentException e) {
e.printStackTrace();
return null;
}
}
/**
*
* 遍历子节点的结构
* @param root
* @return
*/
public static List<RegService> getElementList(Element root){
List elements = root.elements();
int count = 1;
if(elements.size() != 0){
regService = new RegService();
for(Iterator it = elements.iterator();it.hasNext();){
Element elem = (Element)it.next();
getElementList(elem);
String ServiceName = getElementValue(elem, "ServiceName");
String Driver = getElementValue(elem, "Driver");
String Url = getElementValue(elem, "Url");
String UserName = getElementValue(elem, "UserName");
String Password = getElementValue(elem, "Password");
if(ServiceName != null){
regService.setServiceName(getElementValue(elem, "ServiceName"));
}
if(Driver != null){
regService.setDriver(getElementValue(elem, "Driver"));
}
if(Url != null){
regService.setUrl(getElementValue(elem, "Url"));
}
if(UserName != null){
regService.setUserName(getElementValue(elem, "UserName"));
}
if(Password != null){
regService.setPassword(getElementValue(elem, "Password"));
}
if(elem.getName().equals("configure")){
count++;
if(count%2 == 0){
regList.add(regService);
}
regService = new RegService();
}
}
}
return regList;
}
public static String getElementValue(Element elem,String title){
String flag = elem.getName();
if(flag.equals(title)){
return elem.getData().toString();
}else{
return null;
}
}
/**
*
* 根据BaseType查询,相关数据库配置信息
*
*/
public static void main(String args[]){
root = getRootElement();
List<RegService> regList = getElementList(root);
for(RegService regService : regList){
System.out.println(regService.getDriver());
System.out.println(regService.getPassword());
System.out.println(regService.getServiceName());
System.out.println(regService.getUserName());
}
}
}//=====以下是XML文件 ,我在读取XML文件的时候,不能将两个配置都读取出来,不知道大家有没办法<?xml version="1.0" encoding="UTF-8"?>
<service>
<configure BaseType="Mysql">
<ServiceName>test</ServiceName>
<Driver>com.mysql.jdbc.Driver</Driver>
<Url>jdbc:mysql://localhost:3306/test</Url>
<UserName>root</UserName>
<Password>sa</Password>
</configure>
<configure BaseType="Mysql">
<ServiceName>test</ServiceName>
<Driver>com.mysql.jdbc.Driver</Driver>
<Url>jdbc:mysql://localhost:3306/test</Url>
<UserName>root</UserName>
<Password>sa</Password>
</configure>
</service>
解决方案 »
- struts2配置方面的错误 大神帮我看看啊!!
- 一个int数组用线程进行排序
- could not execute query错误
- 大家帮我看看这是怎么回事??
- 在servlet类里是不是不能有对数据库操作的方法或sql语句?
- 系统迁移的数据库字符集问题
- JasperReport的入门问题
- 在线求教:使用struts开发,提交后出错java.lang.ClassCastException
- log4j配置问题.....
- HBuilder中出现Unhandled event loop exception java.lang.StackOverflowError这样的提示语
- struts2+jfreechart如何生成热点图片
- SQL Error: 933, SQLState: 42000
List<Element> configures=root.elements("configure"); 然后你操作这个list就可以了,里面每个节点对象都对应你的配置。
regList.add(regService);}这里你只在list里add了一次 把if去掉