有人可以向我展示如何将用户输入与以下XML文件的内容进行比较的示例吗?我一直在寻找一段时间,但我找不到任何我理解正确的例子。
<?xml version="1.0" encoding="UTF-8" ?>
<Users>
<User>
<id>1</id>
<firstName>Garry</firstName>
<userName>Domain\Garry</userName>
<hashedkey>Example1</hashedkey>
</User>
<User>
<id>2</id>
<firstName>Ben</firstName>
<userName>Domain\ben</userName>
<hashedkey>Example2</hashedkey>
</User>
</Users>
我想做的一个例子是:
If txtFirstName.text = XML.FirstName AND txtHashedkey.text = XML.hashedkey then
msgbox("Key matches"
else
msgbox("Key doesnt match"
end if
我显然需要确保该特定用户的密钥匹配,并且<id>1</id>
中的密钥与<id>2</id>
中的密钥不匹配,而名称位于<id>1</id>
下。有人可以给我一个如何做到这一点的例子吗?
答案 0 :(得分:1)
Dim givenFirstName As String = txtFirstName.Text
Dim givenHashedKey As String = txtHashedkey.Text
Dim doc As XDocument = XDocument.Load(pathToFile)
Dim result As XElement =
doc.Root.
Elements("User").
FirstOrDefault(Function(user)
return user.Element("firstName").Value.Equals(givenFirstName) AndAlso
user.Element("hashedkey").Value.Equals(givenHashedKey)
End Function)
doc.Root
是根节点(“用户”)
Elements("User")
返回所有“用户”xml节点的集合
FirstOrDefault(lambda...)
将执行我们的“检查”表达式,并返回firstName
和hashedkey
等于给定值的第一个元素。
编辑:
如果您需要匹配元素的数量,则使用具有相同谓词的Count
方法。下面的示例仅使用vb.net功能Xml Axis Properties
Dim amountOfElements As Integer =
doc.Root.<User>.Count(Function(user)
return user.<firstName>.Value.Equals(givenFirstName) AndAlso
user.<hashedkey>.Value.Equals(givenHashedKey)
End Function)