• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 273
  • Last Modified:

XML String

Just seeing if someone has a better method out there. I am currently receiving an xml string back in my web app.  I was looking for a way to convert that xml string into something more usable that i can parse through on the fly and go through each one of the elements.

I am using vb.net

  • 4
  • 4
2 Solutions
i use a simple xmldocument object and a select case method for each node:
You can then read the attributes and innertext from each node and it doesn't matter what order they are in in the xml file.

Function ReadXMLFile(xmlIn as string) as string     
            Dim xd As New XmlDocument()
            Dim outstr As String = ""
            Dim xnl As XmlNodeList
            Dim xrn As XmlNode
            xrn = xd.DocumentElement ' root node
            If xrn.HasChildNodes Then
                xnl = xrn.ChildNodes
                For l As Integer = 0 To  xnl.Count - 1
                  Select Case xnl.Name
                    Case "node1"
                      outstr &= xrn.InnerText
                    Case "node2"
                      outstr &= xrn.innerText
                  End Select
            End if
Return outstr
End Function

Open in new window

jimseiwertAuthor Commented:
Is there a way to do this without passing a file? I am trying to avoid creating a file just to read it and then delete it. I have the xml string already in memory?

Also can you provide an example of how you read your above example.

jimseiwertAuthor Commented:
I dont need the example, I understand your method. Thanks,

If you can think of a way i can do this without loading a file.
Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!


xd.LoadXml(xmlIn) where xmlIn is a string from memory
xd.Load(xmlIn) to load from a file where xmlin is the filename

The code goes something like this:
Create a new empty XMLDocument obkect = xd
Create an empty string for output = outstr
load the string/file into the document object (must be valid XML)
create an empty list for the nodes to go in
create a node object to store the infomation
open the root element (xml files should always have a root element)
if the root element has child elements then go through each one
If the node name = "node1" then append to the output variable outstr the value contained in the xml node
If the node name = "node2" then do the same..
      <node1 colour="yellow" >bananas</node1>
      <node1 colour="green" >apples</node1>
      <node2 shape="oblong" >box</node2>

output: bananasboxapples

not the greatest example i admit - but i hope you get the idea..
jimseiwertAuthor Commented:
I am getting the following message when it gets to the .load - Illegal characters in path.  , any thoughts ?

 I tried to pass it a file and a xml string
Have you got a properly formatted xml document
you may need to add
<?xml version="1.0" encoding="utf-8"?>
to the beginning of the string to ensure the XMLDocument object knows whats happening..

the LoadXml function should take a string - exactly what would be the contents of the file..

jimseiwertAuthor Commented:
Hey i was able to read the xml, it was my error. I did not change it to loadxml.

Any idea using your method how to read subtags?
To read child tags - check the node hasChildNodes then use another for next loop and more select case statements.

     If xrn.HasChildNodes Then
                xnl = xrn.ChildNodes
                For l As Integer = 0 To  xnl.Count - 1

Featured Post

Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

  • 4
  • 4
Tackle projects and never again get stuck behind a technical roadblock.
Join Now