我正在尝试制作一个登录系统。为此,我需要检查 xml 文档中是否存在 xml 元素(“用户名”和“密码”)。如果匹配“用户名”和“密码”需要返回真,否则返回假。为此,我使用“for”循环遍历整个文档并使用“if”循环进行验证。我正在使用 java 和 dom 解析器。
xml文件:
<login>
<user>
<username>sunimal</username>
<password>1111</password>
</user>
<user>
<username>naveen</username>
<password>852</password>
</user>
<user>
<username>chamara</username>
<password>12345</password>
</user></login>
java代码:
boolean a = false;
try {
File inputFile = new File("C:\\Users\\Kavindu\\Documents\\NetBeansProjects\\chatserver2\\xml\\userrecord2.xml");
DocumentBuilderFactory dbFactory
= DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(inputFile);
NodeList userList = doc.getElementsByTagName("login");
for (int i = 0; i < userList.getLength(); i++) {
Node user = userList.item(i);
Element eElement = (Element) user;
if (eElement.getElementsByTagName("username").item(i).getTextContent().equals(username) && eElement.getElementsByTagName("password").item(i).getTextContent().equals(password)) {
a = true;
} else {
a = false;
}
}
} catch (Exception ex) {
}
return a;
}
如果我输入第一个元素(“sunimal”和“1111”),我可以得到 true,但对于其他元素返回 false。我以不同的方式尝试了“for”循环和“if”循环,但我无法得到结果。我是编程新手。
最佳答案
这是您的解决方案;我已经在我的 IDE 中检查过了。谢谢。 :-)
要获取标签的第一个元素,您需要使用索引 0。eElement.getElementsByTagName("username").item(0)
当你匹配了用户名和密码后你需要跳出循环,
a = 真; 休息;
否则在下一次迭代中它将再次设置为 false。
public boolean checkLogin(){
boolean a = false;
try {
File inputFile = new File("C:\\Users\\Kavindu\\Documents\\NetBeansProjects\\chatserver2\\xml\\userrecord2.xml");
DocumentBuilderFactory dbFactory
= DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(inputFile);
NodeList userList = doc.getElementsByTagName("user");
System.out.println("userlist length :: "+ userList.getLength());
for (int i = 0; i < userList.getLength(); i++) {
Node user = userList.item(i);
Element eElement = (Element) user;
if (eElement.getElementsByTagName("username").item(0).getTextContent().equals(username) && eElement.getElementsByTagName("password").item(0).getTextContent().equals(password)) {
a = true;
break;
} else {
a = false;
}
}
} catch (Exception ex) {
System.out.println(ex.getMessage());
}
return a;
}
关于java - 如何同时使用 "for"循环和 "if"循环来验证 xml 文档中是否存在 xml 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37581685/