Solved

Processing an XML file from an HTTP source

Posted on 2008-10-03
7
164 Views
Last Modified: 2013-11-05
What changes need to be made to the following code (if it can be done) to replace XmlPath with a URL. Currently it calculates the application path.

This is a VB 2005 Windows Application.
Public Sub ReadXML()
        Dim XmlPath As String = String.Empty
        Dim XmlFile As String = AppConstants.XmlFileName
        Dim XmlDoc As New XmlDocument
        Dim XmlNode As XmlNode
        Dim XmlNodes As XmlNode
 
        XmlPath = System.IO.Path.GetDirectoryName( _
           System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase)
 
        If XmlPath.Substring(0, 6) = "file:\" Then XmlPath = XmlPath.Substring(6)
 
        Dim XmlFullPath As String = System.IO.Path.Combine(XmlPath, XmlFile)
 
        Dim ImportJob As ImportFile
        Dim SourcePath As String = String.Empty
        Dim DestinationPath As String = String.Empty
 
        Try
            XmlDoc.Load(XmlFullPath)
            For Each XmlNode In XmlDoc.DocumentElement.ChildNodes
                Select Case XmlNode.Name
                    Case "COPYJOB"
                        Dim JobClass As New ImportFile
                        For Each XmlNodes In XmlNode.ChildNodes
                            With JobClass
                                Select Case XmlNodes.Name
                                    Case "SOURCEDIRECTORY"
                                        SourcePath = XmlNodes.InnerText
                                        .SourcePath = XmlNodes.InnerText
                                    Case "DESTINATIONDIRECTORY"
                                        DestinationPath = XmlNodes.InnerText
                                        .DestinationPath = XmlNodes.InnerText
                                    Case "HEADERID"
                                        .HeaderID = XmlNodes.InnerText
                                    Case "IMPORTGROUP"
                                        .ImportGroup = XmlNodes.InnerText
                                    Case "FILEPATTERN"
                                        .FileName = XmlNodes.InnerText
                                    Case "INCLUDESUBDIRS"
                                End Select
                            End With
                        Next
                End Select
            Next
            Me.Show()
 
            ' Check for and process any existing files
            lblMessage.Text = AppConstants.MessageLabelProcessExistingFiles
            Me.Refresh()
            For Each ImportJob In ImportJobCollection
                ImportJob.ProcessExistingFiles()
            Next
            lblMessage.Text = String.Empty
            Me.Refresh()
 
        Catch ex As ApplicationException
            Select Case ex.Message
                Case AppConstants.SourcePathNotFound
                    MsgBox("The source directory " + SourcePath + " could not be located." _
                        + vbCrLf + vbCrLf + "The application is being shut down.", _
                        MsgBoxStyle.Critical + MsgBoxStyle.OkOnly, "Critical Error")
                    Me.Close()
                Case AppConstants.DestinationPathNotFound
                    MsgBox("The destination directory " + DestinationPath + " could not be located." _
                        + vbCrLf + vbCrLf + "The application is being shut down.", _
                        MsgBoxStyle.Critical + MsgBoxStyle.OkOnly, "Critical Error")
                    Me.Close()
            End Select
        Catch ex As System.IO.DirectoryNotFoundException
            MsgBox("The XML configuration file " + XmlFullPath + " could not be located." _
                + vbCrLf + vbCrLf + "The application is being shut down.", _
                MsgBoxStyle.Critical + MsgBoxStyle.OkOnly, "Critical Error")
            Me.Close()
        Catch ex As System.IO.IOException
            MsgBox("The XML configuration file " + XmlFullPath + " could not be located." _
                + vbCrLf + vbCrLf + "The application is being shut down.", _
                MsgBoxStyle.Critical + MsgBoxStyle.OkOnly, "Critical Error")
            Me.Close()
        Catch ex As Exception
            '            
        End Try
    End Sub

Open in new window

0
Comment
Question by:dbbishop
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 4
  • 3
7 Comments
 
LVL 8

Expert Comment

by:rlh68
ID: 22641709
Simply pass the url to the Load method, like so...
XmlDoc.Load("http://news.google.com/news?hl=en&um=1&tab=wn&q=&nolr=1&output=rss")
Note, I am using google's RSS feed in this example. This if fine since RSS is XML.
 
0
 
LVL 15

Author Comment

by:dbbishop
ID: 22641753
Okay, clarification:
AppConstants.XmlFileName is a constant that contains the name of the XML File.

XmlPath is a string that will eventually contin the applications' folder path, thus an example youd be:
c:\Program Files\myApplication\

AppConstants.XmlFileName will remain the same and I wish to also make XmlPath a constant that points to an internal URL on our intranet.
Assuming the location on the Intranet is \\192.71.161.34\AppParms\EMIData\ and the file is parms.xml, what would the full URL look like?

The above example has other arguements (hl=, um=, tab=,nolr, output=) Are al required or (I assume) just the output= without the filetype (.xml).
0
 
LVL 8

Assisted Solution

by:rlh68
rlh68 earned 350 total points
ID: 22642656
0
Industry Leaders: 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!

 
LVL 8

Expert Comment

by:rlh68
ID: 22642664
And if you want to use your url paramters simply append them to your url, using a ? to deliminate between the url and the parameters, like so...
\\192.71.161.34\AppParms\EMIData\parms.xml?hl=,um=,tab=,nolr=,output=
Depending on how you code web server to process the parameters, some or all may be required.
0
 
LVL 15

Author Comment

by:dbbishop
ID: 22642769
This is not a web app. It is a windows application written in VB 2005. We are getting ready to deploy it and I was asked if we could put the parms file in a single location accessible by all users. It is an internal application but not all users will have access to a common shared drive so I was wondering if we could put the parms file on one of our intranet servers and access it through the application. I have no web development experience.

If XmlDoc.Load("\\192.71.161.34\AppParms\EMIData\parms.xml")
will work exactly the same way as
XmlDoc.Load("C:\Program Files\myApplication\parms.xml")
then I am fine.

0
 
LVL 8

Accepted Solution

by:
rlh68 earned 350 total points
ID: 22645288

Yes,
XmlDoc.Load(\\192.71.161.34\AppParms\EMIData\parms.xml)
will work as long as the users have access to the network share.

Sorry about mentioning the webserver, when I saw this line I got side tracked,
\\192.71.161.34\AppParms\EMIData\parms.xml?hl=,um=,tab=,nolr=,output=

FYI, if you needed to process parameters (unless it can be done with XML and XSLT) you would need to have a web server process the request. The web server would pick off the parameters, then choose an xml datasource (possibly based on the params) to return to the application. I know this is more than you need but I wanted to mention for future reference.
0
 
LVL 15

Author Closing Comment

by:dbbishop
ID: 31502968
Thanks. The parameters were added to my reply only because they were in your original comment and I was wanting to know if they were something required as part of the load or just optional arguments. Your original example did not explicitly reference an XML file.
0

Featured Post

[Webinar] How Hackers Steal Your Credentials

Do You Know How Hackers Steal Your Credentials? Join us and Skyport Systems to learn how hackers steal your credentials and why Active Directory must be secure to stop them. Thursday, July 13, 2017 10:00 A.M. PDT

Question has a verified solution.

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

This article explains how to create and use a custom WaterMark textbox class.  The custom WaterMark textbox class allows you to set the WaterMark Background Color and WaterMark text at design time.   IMAGE OF WATERMARKS STEPS Create VB …
Creating an analog clock UserControl seems fairly straight forward.  It is, after all, essentially just a circle with several lines in it!  Two common approaches for rendering an analog clock typically involve either manually calculating points with…
Michael from AdRem Software explains how to view the most utilized and worst performing nodes in your network, by accessing the Top Charts view in NetCrunch network monitor (https://www.adremsoft.com/). Top Charts is a view in which you can set seve…
Do you want to know how to make a graph with Microsoft Access? First, create a query with the data for the chart. Then make a blank form and add a chart control. This video also shows how to change what data is displayed on the graph as well as form…

717 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