java - 如何同时使用 "for"循环和 "if"循环来验证 xml 文档中是否存在 xml 元素

标签 java xml

我正在尝试制作一个登录系统。为此,我需要检查 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/

相关文章:

c++ - 解析不同的 xml 消息。版本

xml - PostgreSQL - 通过更新行插入 XML 元素

java - 切换屏幕javafx eclipse

java - 将参数传递给 Jasper Reports 时出现的问题

c# - 如何在 C# 中更改 XML 文件的属性值?

c# - 如何在 C# 中将 xml 格式的 key 对更改为 PEM 格式?

xml - 如何结合两个不同 Nose 测试的测试结果?

java - 等待库方法完成后再继续

java - HashMap if containsValue 无限循环问题

java - 在成员实例化中查找 EJB