2013-10-12 2 views
0

Я новичок в использовании XPath и буду признателен за любую помощь. Я хочу искать XML-файл, подобный приведенному ниже, используя переменную, введенную в текстовое поле, которое является частью страницы входа. Переменная должна использоваться для проверки правильного пользователя. У меня возникают трудности с правильным выражением, чтобы сделать это. Ниже приведен пример примерного файла Xml, который я использовал. Я программирую на Visual Basic.Использование строковой переменной из текстового поля для поиска файла Xml с использованием Xpath

<Log> 
    <customer> 
     <customerid>12345</customerid> 
     <password>Pass1</password> 
     <login>00001</login> 
     <image>Ducati1.jpg</image> 
     <fname>Julie</fname> 
     <lname>James</lname> 
    </customer> 
    <customer> 
     <customerid>23456</customerid> 
     <password>Pass2</password> 
     <login>00002</login> 
     <image>Ducati2.jpg</image> 
     <fname>Bob</fname> 
     <lname>Barnett</lname> 
    </customer> 
    <customer> 
     <customerid>345678</customerid> 
     <password>Pass3</password> 
     <login>00003</login> 
     <image>Ducati3.jpg</image> 
     <fname>Callum</fname> 
     <lname>Claw</lname> 
    </customer> 
</Log> 

Код, который я попробовал это следующим образом: Protected Sub Button2_Click (отправитель As Object, е Как System.EventArgs) Ручки Button2.Click

Dim pass As String 
    Dim user As String 

    pass = lblPassword.Text 
    user = lbluser.Text 


    Dim doc As New XmlDocument 
    Dim nodes As XmlNodeList 


    doc.Load(Server.MapPath("App_Data\Customer.xml")) 
    nodes = doc.SelectNodes("//customer[password = "pass") 

    For Each node In nodes 

     TextBox3.Text = node.SelectSingleNode("customerid").InnerText 

    Next 

End Sub 

End класса

ответ

0

I не знаю этого языка, вы используете vbs или vba, , но я думаю, вы можете попробовать это xpath

//customer[descendant::password[text()= 'Pass2']] 

здесь испытывались http://www.xpathtester.com/obj/bbcf034f-1b3f-4a23-8e99-8f2b57044b46

И уделять внимание опалить и двойные кавычки, когда вы кладете его здесь doc.SelectNodes()

0

Попробуйте следующее выражение XPATH, выбирающий customer которого passwordявляется pass2 тогда он принимает customerid.

//customer[password='pass2']/customerid 

Я подозреваю, что более одного пользователя могут иметь одинаковые password. Лучше взять customerid используя login, как указано ниже:

//customer[login='00002']/customerid 
+0

Спасибо за ваш ответ. Проблема в том, что логин «динамический», поэтому я создал переменную для хранения входа. Проблемы возникают при поиске строки в выражении Xpath i.e. // customer [login = 'pass']/customerid – user2873880

Смежные вопросы