You're both right that my method is clumsy to say the least and XPath
is a better way to go.
I did a "Imports System.Xml" and rewrote my code... compiles, but is
the logic close to what you would use?:

    Private Sub btnLogin_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles btnLogin.Click
        Dim xmlFile As String = Server.MapPath("members.xml")
        Dim doc As New XmlDocument()
        doc.Load(xmlFile)
        Dim nodes As XmlNodeList = doc.SelectNodes("/members
[...@member=txtemailaddress.text]")

        Dim email As String = ("EmailAddress")
        Dim Password As String = ("Password")

        If (email = txtEmailAddress.Text And password =
txtPassword.Text) Then
            lblLoginFailure.Visible = True
            lblLoginFailure.Text = "Welcome to our site."
        Else
            lblLoginFailure.Visible = True
            lblLoginFailure.Text = "Email Address and/or Password are
incorrect. Please try again."
        End If

    End Sub

On Mar 31, 3:24 pm, Joe Enos <[email protected]> wrote:
> The iterating part should be pretty straightforward - instead of
> looking only at row 0 of your datatable, loop through each of them
> with a For or a For Each loop.  Once you find the match, you can break
> the loop, and if you do not find a match, error out at that time.
>
> This is also an example of how using objects might be easier - if you
> deserialized all of your members into a list or an array, then you
> could use a Predicate expression to find a match, with only one or two
> lines of code.
>
> On Mar 31, 11:34 am, Brock <[email protected]> wrote:
>
>
>
> > THANKS!!  (almost got it working - only works on the first "record" in
> > the XML file - not iterating     (email = txtEmailAddress.Text And
> > password = txtPassword.Text) that got it to compile
>
> > ALSO I had a basic logic error in that I needed the login results
> > IfThen blocks to be inside the main IfThen of the Sub like this:
>
> >     Private Sub btnLogin_Click(ByVal sender As System.Object, _
> >     ByVal e As System.EventArgs) Handles btnLogin.Click
> >         Dim ds As DataSet = New DataSet
> >         ds.ReadXml(MapPath("members.xml"))
> >         Dim email As String = ""
> >         Dim password As String = ""
>
> >         If ds.Tables(0).Rows.Count > 0 Then
> >             email = ds.Tables(0).Rows(0)("EmailAddress").ToString()
> >             password = ds.Tables(0).Rows(0)("Password").ToString()
>
> >             If (email = txtEmailAddress.Text And password =
> > txtPassword.Text) Then
> >                 lblLoginFailure.Visible = True
> >                 lblLoginFailure.Text = "Welcome to Our Site."
> >             Else
> >                 lblLoginFailure.Visible = True
> >                 lblLoginFailure.Text = "Email Address and/or Password
> > are incorrect. Please try again."
> >             End If
>
> >         End If
>
> >     End Sub
>
> > On Mar 31, 2:03 pm, Joe Enos <[email protected]> wrote:
>
> > > == is not the equals operator in VB.NET.
>
> > > @Brock:
> > > I believe your code is not compiling because you're trying to compare
> > > a string to a textbox, not the contents of the textbox:
> > > (email = txtEmailAddress And password = txtPassword)
> > > should be
> > > (email = txtEmailAddress.Text And password = txtPassword.Text)
>
> > > FYI: There are better ways of accomplishing this rather than a dataset
> > > - XPath, serialization, etc.
> > > Also, I don't think it matters in this case, but it's good practice to
> > > keep case correct - when retrieving values from your dataset, the
> > > column names are capitalized differently from the XML element names.
>
> > > On Mar 31, 9:49 am, "Stephen Russell" <[email protected]> wrote:
>
> > > > == instead of =  
>
> > > > .........................
> > > > Stephen Russell -
> > > > Senior Visual Studio Developer, DBA
>
> > > > Memphis, TN
> > > > 901.246-0159
>
> > > > > -----Original Message-----
> > > > > From: [email protected]
> > > > > [mailto:[email protected]] On Behalf Of Brock
> > > > > Sent: Tuesday, March 31, 2009 10:55 AM
> > > > > To: DotNetDevelopment, VB.NET, C# .NET, ADO.NET, ASP.NET, XML, XML Web
> > > > > Services,.NET Remoting
> > > > > Subject: [DotNetDevelopment] querying XML for user login
>
> > > > > I'm trying to use an XML file like below for users to login to my
> > > > > website. I have some code started below, but I'm sure there's a better
> > > > > way. "(email = txtEmailAddress And password = txtPassword)" does not
> > > > > compile.
>
> > > > > <?xml version="1.0" standalone="yes"?>
> > > > > <members>
> > > > >   <member>
> > > > >     <firstName>Ralph</firstName>
> > > > >     <lastName>Ward</lastName>
> > > > >     <emailAddress>[email protected]</emailAddress>
> > > > >     <password>1920</password>
> > > > >   </member>
> > > > > </members>
>
> > > > >  Private Sub btnLogin_Click(ByVal sender As System.Object, _
> > > > >     ByVal e As System.EventArgs) Handles btnLogin.Click
>
> > > > >         Dim ds As DataSet = New DataSet
> > > > >         ds.ReadXml(MapPath("members.xml"))
> > > > >         Dim email As String = ""
> > > > >         Dim password As String = ""
>
> > > > >         If ds.Tables(0).Rows.Count > 0 Then
> > > > >             email = ds.Tables(0).Rows(0)("EmailAddress").ToString()
> > > > >             password = ds.Tables(0).Rows(0)("Password").ToString()
> > > > >         End If
>
> > > > >         If (email = txtEmailAddress And password = txtPassword) Then
> > > > >             lblLoginFailure.Visible = True
> > > > >             lblLoginFailure.Text = "Welcome to Our Site."
> > > > >         Else
> > > > >             lblLoginFailure.Visible = True
> > > > >             lblLoginFailure.Text = "Email Address and/or Password are
> > > > > incorrect. Please try again."
> > > > >         End If
> > > > > End Sub
>
> > > > > No virus found in this incoming message.
> > > > > Checked by AVG -www.avg.com
> > > > > Version: 8.0.238 / Virus Database: 270.11.31/2029 - Release Date:
> > > > > 03/31/09 06:02:00- Hide quoted text -
>
> > > - Show quoted text -- Hide quoted text -
>
> - Show quoted text -

Reply via email to