Java 我怎样才能使用;至于;循环和;如果;将两者循环在一起以验证xml文档中是否存在xml元素
我正在尝试建立一个登录系统。为此,我需要检查xml文档中是否存在xml元素(“用户名”和“密码”)。如果匹配“用户名”和“密码”,则需要返回true,否则返回false。为此,我使用“For”循环遍历整个文档,并使用“if”循环进行验证。我正在使用java和dom解析器 xml文档:Java 我怎样才能使用;至于;循环和;如果;将两者循环在一起以验证xml文档中是否存在xml元素,java,xml,Java,Xml,我正在尝试建立一个登录系统。为此,我需要检查xml文档中是否存在xml元素(“用户名”和“密码”)。如果匹配“用户名”和“密码”,则需要返回true,否则返回false。为此,我使用“For”循环遍历整个文档,并使用“if”循环进行验证。我正在使用java和dom解析器 xml文档: <login> <user> <username>sunimal</username> <password>1111</passwo
<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>
苏尼马尔
1111
纳文
852
查马拉
12345
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;
}
boolean a=false;
试一试{
File inputFile=新文件(“C:\\Users\\Kavindu\\Documents\\NetBeansProjects\\chatserver2\\xml\\userrecord2.xml”);
DocumentBuilderFactory数据库工厂
=DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder=dbFactory.newDocumentBuilder();
Document doc=dBuilder.parse(inputFile);
NodeList userList=doc.getElementsByTagName(“登录”);
对于(int i=0;i
如果我输入第一个元素(“sunimal”和“1111”),我可以得到true,但其他元素返回false。我以不同的方式尝试了“for”循环和“if”循环,但没有得到结果。我刚开始编程。这段代码
NodeList userList = doc.getElementsByTagName("login");
返回单个节点,即根节点(
)。你想要的是
NodeList userList = doc.getElementsByTagName("user");
这将返回一个包含每个用户一个元素的NodeList
,然后for循环将迭代用户
然后在
if (eElement.getElementsByTagName("username").item(i).getTextContent().equals(username)
&&
eElement.getElementsByTagName("password").item(i).getTextContent().equals(password)) { ...
将
项目(i)
更改为项目(1)
。此时,您处于
元素,因此用户名和密码是该类型的“第一个”节点;我已经在IDE中检查了这个。谢谢。:-)
要获取标记的第一个元素,需要使用索引0<代码>eElement.getElementsByTagName(“用户名”).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;
}
public boolean checkLogin(){
布尔值a=假;
试一试{
File inputFile=新文件(“C:\\Users\\Kavindu\\Documents\\NetBeansProjects\\chatserver2\\xml\\userrecord2.xml”);
DocumentBuilderFactory数据库工厂
=DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder=dbFactory.newDocumentBuilder();
Document doc=dBuilder.parse(inputFile);
NodeList userList=doc.getElementsByTagName(“用户”);
System.out.println(“用户列表长度::”+userlist.getLength());
对于(int i=0;i
如果还有其他方法,请告诉我。正如您所说,我已更改了它。但它仍然给出相同的结果,而且我将循环“i