Application Forms (XML Extractor)
To get started, create a new project and reference Microsoft XML Core Services (MSXML).
To create a new project
- Open Microsoft® Visual Basic® 6.0. In the New Project dialog box, double-click Standard EXE.
To create a reference to MSXML
On the Project menu, click References.
In the Available References list, select Microsoft XML,v6.0, and then click OK.
Save the project.
Build the Main Form
First, you must build the initial form used by the XML Extractor application. Add the following controls to the form.
A text box for entering the name of the XML file to be used as input.
A label for the text box control.
Two command buttons. One is for starting the application. The other is to exit the application.
For your application form to work with the sample code provided in the next section, you must set the properties in the following table.
Control | Property | Setting |
---|---|---|
Form | Caption | "Medical bills (XML Extractor) Example" |
Label1 | Caption | "File name:" |
Text1 | (Name) Text |
txtFilename "invoices.xml" |
Command1 | (Name) Caption |
cmdStart "Start" |
Command2 | (Name) Caption |
cmdExit "Exit" |
After you modify the property settings, resize the controls and arrange them on the form until your user interface looks like the following:
Complete Code for the Main Form
The following shows the complete code for the main form. To run the code as you read, select all the text, then copy it and paste it into the form of your own Microsoft® Visual Basic® project.
Option Explicit
Private builder As MXXMLWriter60
Private stylesheet As DOMDocument60
Private Sub cmdExit_Click()
End
End Sub
Private Sub cmdStart_Click()
Dim reader As New SAXXMLReader60
Dim filter As New MyExtractor
Dim builder As New MXXMLWriter60
'Entities in DTDs are inherently insecure.
'DTDs are disabled by default in MSXML 6.0.
reader.putFeature "prohibit-dtd", False 'Set this property to False,
'so SAX reader will allow a DTD to be included.
builder.output = New DOMDocument60
Set stylesheet = New DOMDocument60
stylesheet.Load App.Path & "\" & "invoices.xsl"
Set filter.IVBSAXXMLFilter_parent = reader
Set filter.SAXXMLReader60_contentHandler = builder
filter.cutElement = "invoice"
On Error GoTo Uh_Oh
reader.parseURL App.Path & "\" & txtFilename.text
Exit Sub
Uh_Oh:
MsgBox "*** Error while processing invoices *** " + Err.Description & " (in " & Err.Source & ")"
End Sub
Public Sub processInvoice(dom As MSXML2.DOMDocument60, sInvNumber As String)
Dim s As String
s = dom.transformNode(stylesheet)
saveToFile s, App.Path & "\invoice" & sInvNumber & ".html"
frmInvoice.txtAsXml = dom.xml
frmInvoice.txtAsHtml = s
frmInvoice.webPreviewPane.Navigate App.Path & "\invoice" & sInvNumber & ".html"
frmInvoice.Show vbModal
End Sub
Private Sub saveToFile(text As String, fname As String)
Open fname For Output As #5
Print #5, text
Close #5
End Sub
Build the Secondary Form
Next, add the secondary invoice preview form used by the XML Extractor application.
To add a new form to the project
From the Project menu, click Add Form.
In the Add Form dialog box, click Open.
The preview form should allow the user to step through and preview the invoices as output in a Web browser. To support this feature, use the custom WebBrowser control. This is a custom ActiveX control provided as part of the Microsoft Internet Controls library. Therefore, you must add a reference in your project to this component library.
To create a reference to Microsoft Internet Controls
On the Project menu, click Components.
In the Components dialog box, from the Controls tab, select Microsoft Internet Controls from the list. Click OK.
The Web Browser control will now appear in the Toolbox, allowing you to add it to the new form.
Save the project.
You can now add the following controls to the form.
A custom Web browser control. This enables you to use an embedded Web browser window on your form. This browser control will be used to view each output invoice as a final-formatted HTML file.
Two text boxes for showing source text views. One will show the invoices as XML, and one will show the transformed output as HTML.
Two command buttons: one to advance to the next invoice in the file, and one to hide the preview window and return to the main form.
For your application form to work with the sample code provided in the next section, you must set the properties in the following table.
Control | Property | Setting |
---|---|---|
Form | (Name) Caption |
frmInvoice "Invoice" |
Text1 | (Name) MultiLine ScrollBars |
txtAsXml True 2 - Vertical |
Text2 | (Name) MultiLine ScrollBars |
txtAsHtml True 2 - Vertical |
WebBrowser1 | (Name) | webPreviewPane |
Command1 | Name Caption |
cmdNext "Next invoice" |
Command2 | Name Caption |
cmdBreakAndExit "Break and exit" |
After you modify the property settings, resize the controls and arrange them on the form until your user interface looks like the following:
Complete Code for the Secondary Form
The following shows the complete code for the secondary form. To run the code as you read, select all the text, then copy it and paste it into the form of your own Microsoft® Visual Basic® project.
Private Sub cmdBreakAndExit_Click()
End
End Sub
Private Sub cmdNext_Click()
Hide
End Sub
See Also
Extract Data From a Large Document
Overview of the XML Extractor Application
Sample Files (XML Extractor)
MyExtractor Class (XML Extractor)
Run the Application (XML Extractor)
How the XML Extractor Application Works