Solved

Parsing an XML File from a StreamReader

Posted on 2009-07-16
2
1,239 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
ID: 24871911

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
ID: 31604335
BEERS on ME!

Works perfectly!

Thank you SO MUCH!
0

Featured Post

ScreenConnect 6.0 Free Trial

Want empowering updates? You're in the right place! Discover new features in ScreenConnect 6.0, based on partner feedback, to keep you business operating smoothly and optimally (the way it should be). Explore all of the extras and enhancements for yourself!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

In .NET 2.0, Microsoft introduced the Web Site.  This was the default way to create a web Project in Visual Studio 2005.  In Visual Studio 2008, the Web Application has been restored as the default web Project in Visual Studio/.NET 3.x The Web Si…
It’s quite interesting for me as I worked with Excel using vb.net for some time. Here are some topics which I know want to share with others whom this might help. First of all if you are working with Excel then you need to Download the Following …
Windows 10 is mostly good. However the one thing that annoys me is how many clicks you have to do to dial a VPN connection. You have to go to settings from the start menu, (2 clicks), Network and Internet (1 click), Click VPN (another click) then fi…
Although Jacob Bernoulli (1654-1705) has been credited as the creator of "Binomial Distribution Table", Gottfried Leibniz (1646-1716) did his dissertation on the subject in 1666; Leibniz you may recall is the co-inventor of "Calculus" and beat Isaac…

770 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