写一个XML文档,里面只有一个管理员的用户名以及密码,当我在注册一个用户并将用户注册信息写入这个XML文档,
之后我再去验证用户是否已注册。也就是我去注册一个相同的用户名,程序只能判断管理员的用户名已注册,而我之后通过程序写入的用户信息不能判断,也就是可以重复注册,这是为什么?         求高人指点

解决方案 »

  1.   


    //注册
    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;
    }