0

I have a xml file

<config>
   <email Host="201.175.0.0" From="[email protected]" Pass="xxx" Name="NameT"/>
   <combo/>
   <list sex="female"/>
</config>

How can I assign the value of the attributes to variables in vb.net?

I was doing

Dim doc As XmlDocument = New XmlDocument()
doc.Load("Test.xml")
Dim Host = doc.DocumentElement.Attributes.ItemOf("Host").InnerText
Dim From = doc.DocumentElement.Attributes.ItemOf("From").InnerText
Dim Pass = doc.DocumentElement.Attributes.ItemOf("Pass").InnerText
Dim Name = doc.DocumentElement.Attributes.ItemOf("Name").InnerText

Is this correct, what would be a better approach?

1 Answer 1

1

Try this, instead:

Dim doc As XmlDocument = New XmlDocument()
doc.Load("Test.xml")
Dim root As XmlNode = doc.DocumentElement
Dim nodeEmail As XmlNode = root.SelectSingleNode("/config/email")
Dim Host As String = nodeEmail.Attributes.ItemOf("Host").InnerText
Dim From As String = nodeEmail.Attributes.ItemOf("From").InnerText
Dim Pass As String = nodeEmail.Attributes.ItemOf("Pass").InnerText
Dim Name As String = nodeEmail.Attributes.ItemOf("Name").InnerText

You might also want to consider using an associative array (Dictionary in VB) to store those attributes, rather than using a bunch of variables.

In that case, it would look like this:

Dim doc As XmlDocument = New XmlDocument()
doc.Load("Test.xml")
Dim root As XmlNode = doc.DocumentElement
Dim nodeEmail As XmlNode = root.SelectSingleNode("/config/email")
Dim dictionary As New Dictionary(Of String, String)
dictionary.Add("Host", nodeEmail.Attributes.ItemOf("Host").InnerText)
dictionary.Add("From", nodeEmail.Attributes.ItemOf("From").InnerText)
dictionary.Add("Pass", nodeEmail.Attributes.ItemOf("Pass").InnerText)
dictionary.Add("name", nodeEmail.Attributes.ItemOf("Name").InnerText)
Sign up to request clarification or add additional context in comments.

1 Comment

thats a very good idea, do you have an example to use Dictionary?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.