Convert AS/400 Data into XML PDF Print E-mail
Written by Tahir Malik   
Sunday, 20 June 2004

The key is to use dataset objects and XML Web Services for ASP.NET.

XML has become the Internet standard in data representation. XML can not only be transported over HTTP, but it can also go through firewalls, making this markup language quite fluid. XML Web Services, as its name suggests, is highly dependent upon XML.

Don't let the name XML Web Services intimidate you. For iSeries and AS/400 folks, it's conceptually nothing but an elaborate service program. XML Web Services are very similar to service programs, as they provide a service to other programs. You can pass parameters to a Web Service and return parameters back. A detailed discussion of Web Services is beyond the scope of this article, so just consider a Web Service as a service program that returns data back to the calling application--in our case, the Web page.

This article demonstrates how to access data from three different sources via .NET XML Web Services and then convert them all into XML files. We'll create an ASP.NET page called Myfirstpage. This page will connect to three different Web Services to obtain data from AS/400, SQL Server, and an Access table.

This method employs "datasets," which are simply disconnected read/write containers for holding one or more tables of data and the relationships between these tables. .NET includes whole series of objects that are specifically designed to manage and manipulate XML data. This includes native support for XML-formatted data within objects like the DATASET, as well as a whole range of objects that integrate a new XML parsing engine with the .NET framework as a whole. To finish our job, we will convert each of the datasets received from the XML Web Service into an XML file and display the data on the Web page.

Create a Web Page

First, create a Web page called Myfirstpage in Visual Studio .NET by launching Visual Studio .NET and choosing New Project and ASP.NET Web application, as shown in Figure 1.

http://www.mcpressonline.com/articles/images/2002/article_final--Malik062104--ConvertToXML%20V400.png

Figure 1: Launch Visual Studio .NET and choose New Project and ASP.NET Web application. (Click images to enlarge.)

Change the name from Webproject1 to Myfirstpage. Then, delete the generic Webform1.aspx and add another Web page called Myfirstpage.aspx. (Note the .aspx extension rather than .asp). Place three buttons, one label, and a grid on the page.
Your page should look something like Figure 2:

http://www.mcpressonline.com/articles/images/2002/article_final--Malik062104--ConvertToXML%20V401.png

Figure 2: Here's your new page.

You are now ready to receive data from Web Services, which will be displayed in the grid.

Now, add a Web reference to the XML Web Services that will return the data from the three sources. Visual Studio .NET allows you to set a reference to an existing Web Service on your local Web server or any other available Web server over the Internet. To add Web Services references to the Myfirstpage.aspx, right-click on the project and choose Add Web Reference. See Figure 3.

http://www.mcpressonline.com/articles/images/2002/article_final--Malik062104--ConvertToXML%20V402.png

Figure 3: Add Web Services references.

In the dialog box that comes up, insert your Web Service URL in the address. In this example, the Web Service is called http://localhost/test/AS400Webservice/AS400.asmx (Figure 4).

http://www.mcpressonline.com/articles/images/2002/article_final--Malik062104--ConvertToXML%20V403.png

Figure 4: Enter your Web Service URL.

In the right pane, reference to this Web Service will be added to your project (Figure 5).

http://www.mcpressonline.com/articles/images/2002/article_final--Malik062104--ConvertToXML%20V404.png

Figure 5: Your Web Services references have been added to your project.

When you create a Web page in ASP.NET, the page extension is .aspx. Likewise, when you create a Web Service in ASP.NET, the extension is .asmx. The AS400.asmx is nothing but a class, and AS400_data is a method of AS400 class, which happens to return a dataset.

Now, add the next two Web Services to your project and rename the references to Access, AS400, and SQLServer, respectively. Your project should look like Figure 6:

http://www.mcpressonline.com/articles/images/2002/article_final--Malik062104--ConvertToXML%20V405.png

Figure 6: Rename your Web Services references.

You now have three Web references added to your project, each pointing to a different Web Service.

Display the Data on the Web Page

Now, it's time to get the data, display it on the Web page, and write it to the XML file at the same time. If you ran your page right now, it would look like Figure 7:

http://www.mcpressonline.com/articles/images/2002/article_final--Malik062104--ConvertToXML%20V406.png

Figure 7: Without data, your page will look like this.

Notice that you have three buttons and a label on the page. The idea is to click a button to get data associated with that data source, display it on the page, and create an XML file.

You'll need some simple code to get the data from the Web Services, display it, and write an XML file based on the data returned by the Web Service. The following line of code will actually write the XML file:

SQLserver_objdataset.WriteXml(Server.MapPath("SQLserver.XML"))

You could easily amend this code to write the file to your C: drive or any network drive you choose as long as you have appropriate permissions to that drive or folder:

SQLserver_objdataset.WriteXML("C:SQLserver.XML") 

Users can then access that file right from Excel or Word.

Now, when you click on the button "Get Data from AS/400 and convert it into XML," you should see a screen like that shown in Figure 8:

http://www.mcpressonline.com/articles/images/2002/article_final--Malik062104--ConvertToXML%20V407.png

Figure 8: Your AS/400 data has dropped into your Web page.

Notice that the label states that you retrieved data from the AS/400 and wrote it to an XML file called AS400.XML. The file will appear in your Project Explorer (Figure 9):

http://www.mcpressonline.com/articles/images/2002/article_final--Malik062104--ConvertToXML%20V408.png

Figure 9: Project Explorer now shows your AS400.XML file.

Double-click on the AS400.XML file, and you will see the file as shown in Figure 10:

http://www.mcpressonline.com/articles/images/2002/article_final--Malik062104--ConvertToXML%20V409.png

Figure 10: Here are the contents of your AS400.XML file.

Let's recap: Myfirstpage.aspx connects to a Web service called AS400Webservice that connected to AS/400, retrieved the data, and returned a dataset object to the Myfirstapge.aspx page, which displayed the data in a grid and then wrote an XML file.

Following is the code snippet for getting the AS/400 data:

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As 

System.EventArgs) Handles MyBase.Load
        'Put user code to initialize the page here
    End Sub

    
    Private Sub Button_AS400_Click(ByVal sender As System.Object, ByVal 

e As System.EventArgs) Handles Button_AS400.Click

        Dim AS400_objdataset As DataSet
        Dim AS400_proxy As New AS400.AS400()
        AS400_objdataset = AS400_proxy.AS400_data
        Me.DataGrid1.DataSource = AS400_objdataset
        Me.DataBind()
        AS400_objdataset.WriteXml(Server.MapPath("AS400.XML"))
        Me.Label1.Text = "Data retrieved from AS/400 and written to XML 

file AS400.XML"



    End Sub

End Class


Note the method called Button_AS400_click. This is invoked every time you click the button "Get Data from AS/400 and convert it into XML" on the Web page.

In the code immediately following that, you declare your dataset object called AS400_objdataset. This data set will receive the data sent by the Web Service AS400webservice.

The next line simply instantiates the Web Service, and the line after that sets the AS_400_objdataset object to receive the results sent by the Web Service class AS400 and its method, AS400_data.

You could repeat the same procedure and return and display data from SQL Server and Access and write to XML files. When you click on "Get Data from SQL Server and convert it into XML," you get the following Web page, displaying the Authors table in Pubs database and an XML file called SQLserver.xml in your Project Explorer. See Figure 11.

http://www.mcpressonline.com/articles/images/2002/article_final--Malik062104--ConvertToXML%20V410.png

Figure 11: You can also get data from SQL Server and convert it into XML. (Author's Note: The fictitious data shown here is provided as sample data with SQL Server.)

Note that the label states where the data is coming from and its corresponding XML file name.

Again, you can look at the XML file by simply double-clicking on the XML file in your Project Explorer.

You can essentially repeat the process for Access and produce an XML file.

Tahir Malik is a Senior iSeries programmer/analyst with Kos Pharmaceuticals, Inc. He has over a decade of iSeries development experience. He has worked extensively with iSeries Web enablement projects, including client/server programming and intranet/extranet Web development using .NET. He can be reached at This e-mail address is being protected from spam bots, you need JavaScript enabled to view it .


Last Updated ( Sunday, 20 June 2004 )
 
Discuss (9 posts)
T.Malik
Convert AS/400 Data into XML
Jun 06 2005 12:14:00
<a href="/mc?50@232.1KNKfHX1eQT.17@.6b24d1dc">Tahir Malik "TechTip: Populate Files on the iSeries from Oracle or SQL Server" 5/17/05 7:12am</a> <p>hope all is well with you... <p>Rgds <BR>
Malik
#115950
T.Malik
Convert AS/400 Data into XML
Jun 27 2004 12:35:00
The web user actually does not even have to have a profile on the AS/400 at all. <BR>
Let me explain.. <p>Front end or the view as you call it is the ASPX page instead of JSP <BR>
Controller is XML Webservice to put it loosely instead of a Servlet <BR>
Model is an RPG program directly or used as an store procedure. <p>You are thinking in pure Java terms.. <p>Actually its pretty simple.. <p>ASPX page can interact directly with an RPG/cobol or C++ object on the AS/400 with or without a store procedure. The user authority is determine by the OLEDB provider which actually starts a job on the AS/400 under the user profile provided in connection string. Based on this user profile the jobdescription is determined and library lists determined and the object authority is checked. Its actually very similar to starting a interactive job on the AS/400. The authority is checked based on your user profile. ASPX page is using client access OLEDB drivers to make a call to AS/400 and starts a job in QSERVER subsystem and pass in a userid for that job. This became the basis of all your authority just like any other job on the AS/400. <p>The web user do not even have to have user profile on the AS/400 because, again, its the OLEDB driver and the user profile mentioned in the OLEDB driver that have to have a user profile on the AS/400. <p>This way anyone can use the web page regardless of his/her user profile exists on the AS/400 or not. That makes .Net a very flexible platform. <p>You can however restrict webpages to only authorized users in your domain by setting up IIS to allow only authunticated users. <p>The security of ASPX page or ASP.Net application is totally seperate from the secuirty of AS/400. One has nothing to do with the other. The OLEDB drivers detemines that part. The bridge is client Access OLEDB drivers.As far as AS/400 is concerned aspx page is no different than an odbc data transfer call from excel. AS/400 treat all aspx calls as regular client access calls. <p>As far as adding how easy it is to add another user interface? <BR>
How about just adding another page to the asp.net app and keep adding it. Its quite trivial. <p>The AS/400 secuirty is actually not comprised in any way. AS/400 does check who is making the call over tcp/ip and can elaborately accept or reject RPC through exit programs. The aspx page must make a RPC call with a valid user ID and password and that user id must have access to the objects it is trying to use. <p>Updating database works the same way, the remote procedure call(RPC) must be made from aspx page through client access OLEDB drivers pretty much similar to the way a 5250 session is started and a user id and password must be passed in. AS/400 will check the authority of the user profile comming in over TCP/IP and start a job in qserver and if the RPC is an update call then it updates the files. <p>To simplify the architecture of a ASP.Net application, allow me to use an AS/400 analagy.. ASPX page is nothing but a elaborate SDA. You define your menu and define which programs to call on what option. The difference is that your menu sits in Windows environment rather than AS/400. <p>Hope I answered your question. <p>Malik <BR> t_malik@bellsouth.net
#115949
Guest.Visitor
Convert AS/400 Data into XML
Jun 25 2004 12:58:00
Hi Malik, <p>Thanks for writing the article. It was an interesting read. <p>Please help me to understand the <i>architecture</i> of your application. I'm sure you're familiar with MVC. Obviously, the browser interface is the View. What are the Model and Controller? <p>Does the web user need direct *USE or *READ authority to the data? What if the user will be updating data? Does the user need direct *CHANGE or *WRITE authority in that case? If so, that's a breach of security. The user should not have direct use of the file and should use the Model. <p>How "easy" would it be to add another user interface to this application, something besides HTML? <p>Just as a point of reference, on the iSeries, one could use HTML or JSP as the View, a Java servlet as the Controller and a backend RPG program defined as a stored procedure using adopted authority as the Model. With the Model separated out, one could add other user interfaces as well. <p>Regards, <p>Chris
#115948
Guest.Visitor
Convert AS/400 Data into XML
Jun 24 2004 12:20:00
I have been reading about how easy the .NET framework is to use for web development. This is a great article on how to actually try it. Keep up the good work and let's see more articles.
#115947
T.Malik
Convert AS/400 Data into XML
Jun 24 2004 10:38:00
David, <p>I am afraid not. My expertise are Web Enablement of AS/400 through .Net. I tend to stay away from all Java products if I can help it. I find websphere sadistically inconvenient. <p>I wish I could help you. If you need some help with Web development using .Net, please all means do let me know. <p>Thanks <BR>
Malik
#115946
David Abramowitz
Convert AS/400 Data into XML
Jun 23 2004 16:13:00
Do you have the same information using WDSC? <p>Dave
#115945
Guest.Visitor
Convert AS/400 Data into XML
Jun 22 2004 15:04:00
Malik, <p>This is excellent artical. <BR>
I may need to contact you if need your assistance. <p>Bharat Pandya
#115944
Guest.Visitor
Convert AS/400 Data into XML
Jun 22 2004 15:03:00
Malik, <p>This is excellent artical. <BR>
I may need to contact you if need youe assistance. <p>Bharat Pandya
#115943
MC Press Web Site Staff
Convert AS/400 Data into XML
Jun 06 2005 12:14:00
This is a discussion about <B>Convert AS/400 Data into XML</b>.<p align='center'><a href=http://www.mcpressonline.com/mc?1@232.1KNKfHX1eQT.17@.6aeb7f4b>Click here for the article</a>.</p>
#115942


Discuss...
User Rating: / 0
PoorBest 
Related Articles
< Prev   Next >

   MC-STORE.COM