2016-04-27 5 views
0

Ich habe versucht, dies länger zu machen, als ich jetzt sagen möchte, und kann einfach nicht herausfinden, warum es das Passwort nicht erkennt, ich bekomme eine Nullzeiger-Ausnahme if (userPassword.getTextContent() auf dieser Linie. equals (Passwort)Java, Fehler bei der XML-Benutzerüberprüfung

Hier ist die Methode

public class XML { 
    public static boolean login(String email, String password) { 
     DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); 
     try { 

     DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder(); 
     Document document = documentBuilder.parse("data.xml"); 
     Element root = document.getDocumentElement(); 
     NodeList nList = root.getChildNodes(); 
     for (int i = 0; i < nList.getLength(); i++) { 
      Node nNode = nList.item(i); 
      if (nNode.getNodeType() == Node.ELEMENT_NODE) { 
       Element users = (Element) nNode; 
       if (users.getNodeName().compareTo("users") == 0) { 
        NodeList userList = users.getChildNodes(); 
        for (int j = 0; j < userList.getLength(); j++) { 
         Node userNode = userList.item(j); 
         NodeList AttributeList = userNode.getChildNodes(); 
         Node userPassword = AttributeList.item(1); 
         Node userEmail = AttributeList.item(0); 
         if (userPassword.getTextContent().equals(password) 
           && userEmail.getTextContent().equals(email)) { 
          return true; 
         } 
        } 
       } 
      } 
     } 
    } catch (ParserConfigurationException | SAXException | IOException e) { 

    } 
    return false; 
} 
+0

Was sagt Ihr Debugging? Wie ist AttributeList null oder? – Hamletkrita

Antwort

0

Attribut Knoten aber keinen Wert Textinhalt haben. Sie sollten verwenden die folgende Konstrukt abrufen es:

Node userNode = userList.item(j); 
String attributeValue = userNode.getAttribute("attributeName") 

Alternativ können Sie, da Sie bereits die Attribute Node s haben, diese in org.w3c.dom.Attr umwandeln und deren .getValue()-Methode verwenden.