写一个XML文档,里面只有一个管理员的用户名以及密码,当我在注册一个用户并将用户注册信息写入这个XML文档,
之后我再去验证用户是否已注册。也就是我去注册一个相同的用户名,程序只能判断管理员的用户名已注册,而我之后通过程序写入的用户信息不能判断,也就是可以重复注册,这是为什么? 求高人指点
之后我再去验证用户是否已注册。也就是我去注册一个相同的用户名,程序只能判断管理员的用户名已注册,而我之后通过程序写入的用户信息不能判断,也就是可以重复注册,这是为什么? 求高人指点
//注册
public static void writuserinfo(String username,String password){
try{
// 得到DOM解析器的工厂实例
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
//从DOM工厂获得DOM解析器
DocumentBuilder db = dbf.newDocumentBuilder();
//解析XML文档。得到一个Document,即DOM树
Document doc = db.parse("src/小说阅读器用户.xml");
//创建username节点
Element usernameElement = doc.createElement("username");
usernameElement.setAttribute("name", username);
//创建password节点
Element passwordElement = doc.createElement("password");
passwordElement.setAttribute("name", password);
//添加父子节点关系
usernameElement.appendChild(passwordElement);
Element phoneElement = (Element) doc.getElementsByTagName("userInfo").item(0);//得到brand的父节点phoneInfo
phoneElement.appendChild(usernameElement);
//保持XML文件
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMSource domSource = new DOMSource(doc);
//设置编码类型
transformer.setOutputProperty(OutputKeys.ENCODING,"GB2312");
StreamResult result = new StreamResult(new FileOutputStream("src/小说阅读器用户.xml"));
//把DOM树转换为XML文件
transformer.transform(domSource, result);
}catch(Exception ex){
ex.getMessage();
}
}
public Member enroll(String username,String password){
//创建DOM解析器工厂实例
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
try {
//从工厂实例中得到DOM解析器
DocumentBuilder db = dbf.newDocumentBuilder();
//解析XML文档得到一个Document。即DOM树
Document doc = db.parse("src/小说阅读器用户.xml");
//查找用户名
NodeList list = doc.getElementsByTagName("username");
for(int i = 0;i<list.getLength();i++){
Node usernameNode = list.item(i);
Element usernameElement = (Element) usernameNode;
String user = usernameElement.getAttribute("name");
if(!(username.equals(user))){
writuserinfo(username,password);
return member;
}else{
return null;
}
}
} catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}