报错提示为:Exception in thread "main" java.lang.IllegalArgumentException: Adding text to an XML document must not be null
以下为源码,还建立了一个users.xml文件
public class UserDao {
public static final String USER_XML = "users";
private Document ud;
public UserDao() {
ud = XMLUtil.getUserDocument();
}
private void write(){
XMLUtil.write2XML(ud, USER_XML);
}
public void add(User user){
Element e = ud.getRootElement().addElement("user");
e.addElement("username").addText(user.getUsername());
e.addElement("password").addText(user.getPassword());
e.addElement("nickname").addText(user.getNickname());
write();
}
}
public class XMLUtil {
private static Document userDocument;
public static Document getUserDocument(){
//如果document存在直接返回
if(userDocument!=null) return userDocument;
//如果不存在就创建对象
try {
SAXReader reader = new SAXReader();
userDocument = reader.read(XMLUtil.class.getClassLoader().getResourceAsStream("xml/users.xml"));
return userDocument;
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
public static void write2XML(Document d,String name){
XMLWriter out = null;
try {
String path = XMLUtil.class.getClassLoader().getResource("xml/"+name+".xml").getPath();
path = path.replace("bin","src");
out = new XMLWriter(new FileWriter(path),OutputFormat.createPrettyPrint());
out.write(d);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
if(out!=null) out.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
public class TestUser {
private static UserDao ud = new UserDao();
public static void main(String[] args) {
testAdd();
}
public static void testAdd(){
User u = new User();
u.setNickname("张三");
u.setPassword("123");
u.setNickname("zhangsan");
ud.add(u);
}
}
public class User {
private String username;
private String password;
private String nickname;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
}
这个是users.xml的代码
<?xml version="1.0" encoding="UTF-8"?>