这是我的代码:
public void Login() {
try{
DocumentBuilderFactory builderfactory = DocumentBuilderFactory.newInstance();
DocumentBuilder db = builderfactory.newDocumentBuilder();
File path = new File("src/dataPengguna/dataPengguna.xml");
Document doc = db.parse(path);
Element pengguna = (Element) doc.getElementsByTagName("pengguna");
NodeList list = pengguna.getElementsByTagName("user");
for (int i = 0; i < list.getLength(); i++) {
Element user = (Element) list.item(i);
Node username = user.getElementsByTagName("username").item(i);
Node password = user.getElementsByTagName("password").item(i);
if(loginuser.getText().equals(username.getTextContent())
&& loginpass.getText().equals(password.getTextContent())){
JOptionPane.showMessageDialog(rootPane, "welcome");
}
}
}catch(Exception e){
e.printStackTrace();
}
}
这是我的xml:
<?xml version="1.0" encoding="UTF-8"?>
<pengguna>
<user>
<nama>septian</nama>
<username>septiansykes</username>
<password>1234</password>
<status>belumpinjam</status>
</user>
<user>
<nama>koko</nama>
<username>kokosan</username>
<password>12er</password>
<status>belumpinjam</status>
</user>
<user>
<nama>tamrin</nama>
<username>tamrincs</username>
<password>gt234</password>
<status>belumpinjam</status>
</user>
</pengguna>
这是我的错误:
java.lang.ClassCastException:com.sun.org.apache.xerces.internal.dom.DeepNodeListImpl cannot be cast to org.w3c.dom.Element
我尝试在xml文件中获取元素,我想检查元素的用户名和密码,但是有关于演员类的错误,这对我来说似乎很难,...感谢之前
答案 0 :(得分:5)
这是问题所在:
Element pengguna = (Element) doc.getElementsByTagName("pengguna");
getElementsByTagName
不返回单个元素 - 它返回多个元素。你可能想要这样的东西:
NodeList penggunas = doc.getElementsByTagName("pengguna");
if (penggunas.getLength() != 1) {
// Handle this - e.g. throw an exception
}
Element pengguna = (Element) penggunas.item(0);
编辑:稍后,你有一个错误:
Node username = user.getElementsByTagName("username").item(i);
Node password = user.getElementsByTagName("password").item(i);
这应该是:
Node username = user.getElementsByTagName("username").item(0);
Node password = user.getElementsByTagName("password").item(0);
您已经在user
元素中 - 因此总是想要该元素中的第一个username
和password
元素。否则,您要求第二个username
元素中的第二个user
元素,第三个username
元素中的第三个user
元素等。编号与元素相关你在,而不是全球统计。
答案 1 :(得分:1)
getElementByTagName()
返回NodeList
,您尝试将其投放到Element
。这一行不正确,会为您提供ClassCastException
:
Element pengguna = (Element) doc.getElementsByTagName("pengguna");