gpt4 book ai didi

xml - 解析XML并根据元素值检查值

转载 作者:行者123 更新时间:2023-12-02 13:23:17 25 4
gpt4 key购买 nike

我试图通过解析填充了用户的XML文件来验证用户的用户名和密码。目前,我的方法返回为false。应该通过<users>的子元素来查找具有给定用户名的用户,然后根据checkUser()的参数检查密码。

我似乎无法访问<password>元素内的文本。

到目前为止,这是我尝试过的:

fun checkUser(username: String, password: String) : Boolean {
val xmlFile = File("Users.xml")
val doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(xmlFile)
var list = doc.getElementsByTagName("user")
for (i in 0 until list.length) {
var current = list.item(i)
if (current.attributes.getNamedItem("id").nodeValue == username) {
return current.lastChild.textContent == password //trying to check text against given password
}
}
return false
}

fun main(args: Array<String>) {
println(checkUser("alec", "123")) //returns false right now
}

这是我的XML文件:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<users>
<user id="alec">
<username>alec</username>
<password>123</password>
</user>
<user id="john">
<username>john</username>
<password>415</password>
</user>
</users>

编辑
current.attributes.item(0)返回一个节点,但我需要在 id标记内获取 <user>属性,并根据给定的用户名对其进行检查。

编辑
修复了获取ID并与 username参数进行比较的代码,但仍返回false

最佳答案

如果您打印返回调用current.childNodes的NodeList的大小,则将得到5。第一个,第三个和最后一个节点是空白节点。您的数据位于节点2和4中。因此,您可以将代码替换为以下代码,它将起作用。

val xmlFile = File("Users.xml")
val doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(xmlFile)
var list = doc.getElementsByTagName("user")
for (i in 0 until list.length) {
var current = list.item(i)
if (current.attributes.getNamedItem("id").nodeValue == username) {
println(current.childNodes.length)

for (j in 0 until current.childNodes.length) {
if (current.childNodes.item(j).nodeName == "password") {
return current.childNodes.item(j).textContent == password
}
}
}
}
return false

就是说,我很想使用更好的XML解析器,因为此代码比所需的要冗长得多。

例如,对于DOM4J,您可以将上述所有代码替换为
val doc = SAXReader().read(File("users.xml"))
val users = doc.rootElement.elements("user")
for (user in users) {
if (user.attribute("id").value == username) {
return user.element("password").text == password
}

}
return false

关于xml - 解析XML并根据元素值检查值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50082475/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com