2016-05-02 10 views
-1

JavaとXMLに問題があります。 新規ユーザーをファイルusers.xmlに保存する登録フォームがあり、同じユーザー名を持つ別のユーザーが存在する場合は、現在のユーザーを保存する前にチェックします。Java XMLでノードが存在するかどうかを調べる

これは私のXMLです:

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
<user id="1"> 
<username>John</username> 
<password>mypassword</password> 
</user> 

そして、これは私のコードです:

public class isUserExisting { 

public static boolean checkIfExists(String username) { 

    try { 
     File inputFile = new File("src/users.xml"); 
     DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); 
     DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); 
     Document doc = dBuilder.parse(inputFile); 


     System.out.println("Root element :" + doc.getDocumentElement().getNodeName()); 
     NodeList nList = doc.getElementsByTagName("user"); 
     System.out.println("----------------------------"); 


     for (int temp = nList.getLength() - 1; temp >= 0 ; temp--) { 
      Node nNode = nList.item(temp); 
      System.out.println(); 

      if (nNode.getNodeType() == Node.ELEMENT_NODE) {  

       Element eElement = (Element) nNode; 


       String tempUser = eElement.getElementsByTagName("username").item(0).getTextContent(); 

       if(tempUser == username) { 
        return true; 
        } 
       else { 
        return false; 
       } 
      } 


     } 
     } catch (Exception e) { 
     e.printStackTrace(); 
     } 

    return false; 
} 

} 

しかし、毎回私が使用:

if(isUserExisting.checkIfExists(username)) { 
System.out.println("This username exists"); 
} 

私は、次のエラーが表示さ:

[Fatal Error] users.xml:6:2: The markup of the document that follow the element must have a correct format. 
org.xml.sax.SAXParseException; systemId: file:/eclipse/workspace/Folder/src/users.xml; lineNumber: 6; columnNumber: 2; The markup of the document that follow the element must have a correct format. 

何が問題なのですか?事前に感謝:)

+1

if(tempUser == username) 

を交換してくださいXMLでは、複数のユーザーがいる場合は、外部要素が必要です。 – Andreas

+0

エラーとは関係ありませんが、[Javaの文字列を比較するにはどうすればいいですか?](http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java) – Andreas

+0

そのチェックのための単一のXPath式? –

答えて

0

私のために実行されます。私はあなたがequals()方法で適切に文字列を比較する必要が正しく、この作業をするためにFatal Error

を得ることはありません: のみ1つのルート要素が存在することができ

if (tempUser.equals(username)) 
関連する問題