Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

xml response http post - convert request.inputstream to string - asp.net

I'm receiving an xml response and I now want to parse this.

Currently what I have to receive the XML response is:

    Dim textReader = New IO.StreamReader(Request.InputStream)

    Request.InputStream.Seek(0, IO.SeekOrigin.Begin)
    textReader.DiscardBufferedData()

    Dim Xmlin = XDocument.Load(textReader)

How can I go ahead now a process this and pick out the element values?

<subscription>
<reference>abc123</reference>
<status>active</status>
<customer>
    <fname>Joe</fname>
    <lname>bloggs</lname>
    <company>Bloggs inc</company>
    <phone>1234567890</phone>
    <email>[email protected]</email>
 </customer>
 </subscription>

If I have it in string format I can do this using

    Dim xmlE As XElement = XElement.Parse(strXML) ' strXML is string version of XML

    Dim strRef As String = xmlE.Element("reference")

Do I need to convert the request.inputstream to a strign format or is there another better way?

Thanks

like image 863
thegunner Avatar asked Nov 27 '25 13:11

thegunner


2 Answers

Do I need to convert the request.inputstream to a strign format or is there another better way?

You could directly load it from the request stream, you don't need to convert it to a string:

Request.InputStream.Position = 0
Dim Xmlin = XDocument.Load(Request.InputStream)
Dim reference = Xmlin.Element("subscription").Element("reference").Value

or:

Dim reference = Xmlin.Descendants("reference").First().Value
like image 96
Darin Dimitrov Avatar answered Nov 29 '25 12:11

Darin Dimitrov


In the end after much testing I could only get this to work:

    Dim textReader = New IO.StreamReader(Request.InputStream)

    Request.InputStream.Seek(0, IO.SeekOrigin.Begin)
    textReader.DiscardBufferedData()

    Dim Xmlin = XDocument.Load(textReader)

    Dim strXml As String = Xmlin.ToString

    Dim xmlE As XElement = XElement.Parse(strXml)
    Dim strRef As String = xmlE.Element("reference")
    Dim strStatus As String = xmlE.Element("status")
    Dim strFname As String = xmlE.Element("customer").Element("fname").Value()
    Dim strLname As String = xmlE.Element("customer").Element("lname").Value()
    Dim strCompany As String = xmlE.Element("customer").Element("company").Value()
    Dim strPhone As String = xmlE.Element("customer").Element("phone").Value()
    Dim strEmail As String = xmlE.Element("customer").Element("email").Value()
like image 44
thegunner Avatar answered Nov 29 '25 11:11

thegunner



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!