如何使用XML文件存储信息VB

时间:2016-11-20 15:33:53

标签: xml vb.net

有人可以向我展示如何将用户输入与以下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>下。有人可以给我一个如何做到这一点的例子吗?

1 个答案:

答案 0 :(得分:1)

使用LINQ to Xml

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...)将执行我们的“检查”表达式,并返回firstNamehashedkey等于给定值的第一个元素。

编辑:
如果您需要匹配元素的数量,则使用具有相同谓词的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)