2016-11-20 59 views
0

有人可以告訴我一個如何比較用戶輸入和以下XML文件內容的例子嗎?我一直在尋找一段時間,但我找不到任何我理解正確的例子。如何使用XML文件來存儲信息VB

<?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

這不是一個教程網站:你的問題將得到更好的接受,如果你發佈你嘗試和提出了一個具體的問題。也就是說,XML可能是保存這些數據的錯誤方式 - 任何人都可以編輯文件來替換其他內容。 – Plutonix

+0

嗨Plutonix,我正在加密XML文件,我沒有提到,以避免複雜性。 – user3516240

+0

所以你有兩個問題:加密和解密文本文件,保存和解析XML。仍然不是教程網站。如果您嘗試過某些功能並遇到特定問題,則此網站將對您更有幫助。 –

回答

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) 
+0

謝謝你的幫助!它似乎工作,但我不知道如何把它放入If語句來檢查返回的值的數量。 – user3516240

+0

非常感謝!使用XML文字的 – user3516240

+0

'Dim matches = doc。 。Any(Function(u)u。 .Value =「Ben」AndAlso u。 .Value =「Example2」)'。如果有很多用戶存在一個小問題,那就是整個XML文件被加載到內存中,但與每次對文件進行加密和解密相比,這似乎沒有任何意義。 – Slai