Solved

Parsing an XML File from a StreamReader

Posted on 2009-07-16
2
1,237 Views
Last Modified: 2012-06-27
I have an interface that sends data to a web page (GXI.aspx) The XML Sent looks like :

<?xml version = '1.0'?>
<?Label VCAT|RESULT|54|SUCCESS?>
<RESULT xmlns="result.fidelio.1.0" success="SUCCESS">
   <resortId>VCAT</resortId>
   <resultMessage>Successfully updated profile in Opera.</resultMessage>
   <ResultIds>
      <ResultId resultMsgType="PROFILE">
         <pmsId>59020</pmsId>
         <memberNr>SI-A-P-00120</memberNr>
      </ResultId>
   </ResultIds>
</RESULT>

I need a way to...
1)  Retrieve the <?LABEL Data
2)  Get the <ResultId resultMsgType >
3)  From the <ResultId>
        <pmsId>
        <memberNr>

My code is included below.
Imports System.IO

Imports system.xml
 

Partial Class GXI

    Inherits System.Web.UI.Page

    Dim pmsId As String, memberNr As String, resultMsgType As String

    Dim OC As New OperaComplete
 

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        Dim ER As New GXIErrors

        Page.Response.ContentType = "text/xml"

        '// Read XML posted via HTTP

        '?propertyName=VCAT&messagetype=RESULT&transactionId=50&Status=SUCCESS

        Me.Label1.Text = Request.QueryString("propertyName")

        Me.Label2.Text = Request.QueryString("messageType")

        Me.Label3.Text = Request.QueryString("transactionId")

        Me.Label4.Text = Request.QueryString("Status")

        Dim reader As StreamReader = New StreamReader(Page.Request.InputStream)

        'Dim xmlText As String = reader.ReadToEnd

        Try

            ReadXML(reader)

            If IsNumeric(pmsId) Then

                OC.NewRecord()

                OC.pmsID = CLng(pmsId)

                OC.MemberNr = memberNr

                OC.messageType = resultMsgType

                OC.TransID = CLng(Request.QueryString("transactionId"))

                OC.Save()

            Else

                ER.NewRecord()

                ER.ErrorText = "pmsId=" & pmsId & ", memberNr=" & memberNr & ", ResultMsgType=" & resultMsgType

                ER.ErrorLocation = "PageLoad"

                ER.Save()

            End If

        Catch ex As Exception
 

            ER.NewRecord()

            ER.ErrorText = ex.Message

            ER.ErrorLocation = "PageLaod"

            ER.Save()

        End Try
 

    End Sub

    Private Sub ReadXML(ByVal inReader As StreamReader)

        Try

            Dim m_xmld As XmlDocument

            Dim m_node As XmlNode

            resultMsgType = ""

            pmsId = ""

            memberNr = ""
 

            m_xmld = New XmlDocument()

            m_xmld.Load(inReader)

            m_node = m_xmld.SelectSingleNode("//RESULT/ResultIds/ResultId")
 

            resultMsgType = m_node.Attributes.GetNamedItem("resultMsgType").Value

            pmsId = m_node.ChildNodes.Item("pmsId").InnerText

            memberNr = m_node.ChildNodes.Item("memberNr").InnerText
 

        Catch ex As Exception

            Dim ER As New GXIErrors

            ER.NewRecord()

            ER.ErrorText = ex.Message

            ER.ErrorLocation = "ReadXML"

            ER.Save()

        End Try

    End Sub

End Class

Open in new window

0
Comment
Question by:RDWaibel
2 Comments
 
LVL 15

Accepted Solution

by:
jinal earned 500 total points
Comment Utility

Dim str As String = "<?xml version = '1.0'?><?Label VCAT|RESULT|54|SUCCESS?><RESULT xmlns='result.fidelio.1.0' success='SUCCESS'><resortId>VCAT</resortId><resultMessage>Successfully updated profile in Opera.</resultMessage><ResultIds><ResultId resultMsgType='PROFILE'><pmsId>59020</pmsId><memberNr>SI-A-P-00120</memberNr></ResultId></ResultIds></RESULT>"

        Dim doc As New XmlDocument

        doc.LoadXml(str)

        Dim node As XmlNode = doc.ChildNodes(1)  '<?Label VCAT|RESULT|54|SUCCESS?>

        Dim labelnodeval As String = node.InnerText

        Dim nodeResults As XmlNodeList = doc.DocumentElement.GetElementsByTagName("ResultId")

        If nodeResults.Count > 0 Then

            Dim valueofAttribute As String = nodeResults(0).Attributes("resultMsgType").InnerText

            Dim pmsId As String = nodeResults(0).ChildNodes(0).InnerText

            Dim memberNr As String = nodeResults(0).ChildNodes(1).InnerText

        End If

Open in new window

0
 
LVL 14

Author Closing Comment

by:RDWaibel
Comment Utility
BEERS on ME!

Works perfectly!

Thank you SO MUCH!
0

Featured Post

Find Ransomware Secrets With All-Source Analysis

Ransomware has become a major concern for organizations; its prevalence has grown due to past successes achieved by threat actors. While each ransomware variant is different, we’ve seen some common tactics and trends used among the authors of the malware.

Join & Write a Comment

A quick way to get a menu to work on our website, is using the Menu control and assign it to a web.sitemap using SiteMapDataSource. Example of web.sitemap file: (CODE) Sample code to add to the page menu: (CODE) Running the application, we wi…
Problem Hi all,    While many today have fast Internet connection, there are many still who do not, or are connecting through devices with a slower connect, so light web pages and fast load times are still popular.    If your ASP.NET page …
It is a freely distributed piece of software for such tasks as photo retouching, image composition and image authoring. It works on many operating systems, in many languages.
Get a first impression of how PRTG looks and learn how it works.   This video is a short introduction to PRTG, as an initial overview or as a quick start for new PRTG users.

743 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

7 Experts available now in Live!

Get 1:1 Help Now