xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<config>
<!--oracle数据库连接!-->
<OracleSource>
<driver>oracle.jdbc.driver.OracleDriver</driver>
<url>jdbc:oracle:thin:@192.168.1.105:1521:cms</url>
<username>cmsuser</username>
<password>xyz</password>
</OracleSource>
<!--mysql数据连接!-->
<MySQLSource><driver>om.mysql.jdbc.Driver</driver><url>jdbc:mysql://192.168.1.105:3308/cadtest</url><username>root</username><password>founder123</password></MySQLSource>
<!-- 标记,判断使用哪一个数据库 -->
<Index>1</Index>
</config>我用java读xml文件
如果<OracleSource></OracleSource>之间的数据如果不换行,我能读出来,如果里边的数据换行的话,就读不出来啦。为什么 。
例如<OracleSource></OracleSource>之间的数据读不出来,
<MySQLSource></MySQLSource>之间的数据能读出来。
<?xml version="1.0" encoding="UTF-8"?>
<config>
<!--oracle数据库连接!-->
<OracleSource>
<driver>oracle.jdbc.driver.OracleDriver</driver>
<url>jdbc:oracle:thin:@192.168.1.105:1521:cms</url>
<username>cmsuser</username>
<password>xyz</password>
</OracleSource>
<!--mysql数据连接!-->
<MySQLSource><driver>om.mysql.jdbc.Driver</driver><url>jdbc:mysql://192.168.1.105:3308/cadtest</url><username>root</username><password>founder123</password></MySQLSource>
<!-- 标记,判断使用哪一个数据库 -->
<Index>1</Index>
</config>我用java读xml文件
如果<OracleSource></OracleSource>之间的数据如果不换行,我能读出来,如果里边的数据换行的话,就读不出来啦。为什么 。
例如<OracleSource></OracleSource>之间的数据读不出来,
<MySQLSource></MySQLSource>之间的数据能读出来。
你试试用正则表达式把换行都去掉看看.!
至少如果是用的dom4j的话,换不换行是没有影响的.! 没用过jdom.不太清楚.!
如果不让你换行就不换呗. 反正我知道写xml写进去全部都是没有换行的.!
使用Digester
1.新建自定义节点类Bean如:package com.test;public class Person {
private String id;
private String name;
private int age;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
2.创建xml文件<?xml version="1.0" encoding="UTF-8"?>
<list>
<person>
<id>001</id>
<name>小张</name>
<age>20</age>
</person>
<person>
<id>002</id>
<name>王五</name>
<age>28</age>
</person>
</list>3.在项目中导入org.apache.commons.digester包,解析类如下:package com.test;import java.io.File;
import java.io.IOException;
import java.util.ArrayList;import org.apache.commons.digester.Digester;
import org.xml.sax.SAXException;public class ParseBean { /**
* @param args
*/
public void parseFile(File f){
ArrayList list = null;
Digester d = new Digester();
//不采用与DTD文件进行验证
d.setValidating(false);
//创建父节点
d.addObjectCreate("list", java.util.ArrayList.class);
d.addObjectCreate("list/person", com.test.Person.class);
//注入属性
d.addBeanPropertySetter("list/person/id");
d.addBeanPropertySetter("list/person/name");
d.addBeanPropertySetter("list/person/age");
//如果有下一个节点继续
d.addSetNext("list/person", "add");
try {
list = (ArrayList)d.parse(f);
} catch (IOException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
}
if(!list.isEmpty()){
for(int i = 0;i < list.size();i++){
Person p = (Person)list.get(i);
System.out.println("编号:" + p.getId() + "名字:"+ p.getName()+ "年龄:"+ p.getAge());
}
}
}
public static void main(String[] args) {
new ParseBean().parseFile(new File("E:\\myworkspace\\parseXml\\myfile.xml"));
}}
解析结果:编号:001名字:小张年龄:20
编号:002名字:王五年龄:28