So I got a snippet of code to parse an XML file using SAX. This script pops a windows witht he legend "Some character" and the value of the key tags in the XML.

However the script print all the tags content which having no value just give out the blank space.

The script is the following: Code:
Sub Main
   cXmlFile = "/home/jza/tmp/test.xml"

   cXmlUrl = ConvertToURL( cXmlFile )

   ReadXmlFromUrl( cXmlUrl )
End Sub

Sub ReadXmlFromUrl( cUrl )
   oSFA = createUnoService( "com.sun.star.ucb.SimpleFileAccess" )

   oInputStream = oSFA.openFileRead( cUrl )

   ReadXmlFromInputStream( oInputStream )

   oInputStream.closeInput()
End Sub

Sub ReadXmlFromInputStream( oInputStream )
   oSaxParser = createUnoService( "com.sun.star.xml.sax.Parser" )
   oDocEventsHandler = CreateDocumentHandler()
   oSaxParser.setDocumentHandler( oDocEventsHandler )
   oInputSource = createUnoStruct( "com.sun.star.xml.sax.InputSource" )
   With oInputSource
      .aInputStream = oInputStream   ' plug in the input stream
   End With

   oSaxParser.parseStream( oInputSource )
End Sub

Private goLocator As Object
Private glLocatorSet As Boolean

Function CreateDocumentHandler()
oDocHandler = CreateUnoListener( "DocHandler_", "com.sun.star.xml.sax.XDocumentHandler" )

   glLocatorSet = False

   CreateDocumentHandler() = oDocHandler
End Function

Sub DocHandler_startDocument()
End Sub

Sub DocHandler_endDocument()
End Sub

Sub DocHandler_startElement( cName As String, oAttributes As com.sun.star.xml.sax.XAttributeList )
End Sub

Sub DocHandler_endElement( cName As String )
End Sub

Sub DocHandler_characters( cChars As String )
   Print "Some character", cChars
End Sub

Sub DocHandler_setDocumentLocator( oLocator As com.sun.star.xml.sax.XLocator )
   goLocator = oLocator

   glLocatorSet = True
End Sub



The issue is basically this part where the Print functions just print all the characters which becomes every single cell of the XML: Code:
Sub DocHandler_characters( cChars As String )
   Print "Some character", cChars
End Sub



The XML is simple: Code:
<Employees>
   <Employee id="101">
      <Name>
         <First>John</First>
         <Last>Smith</Last>
      </Name>
      <Address>
         <Street>123 Main</Street>
         <City>Lawrence</City>
         <State>KS</State>
         <Zip>66049</Zip>
      </Address>
      <Phone type="Home">785-555-1234</Phone>
   </Employee>
   <Employee id="102">
      <Name>
         <First>Bob</First>
         <Last>Jones</Last>
      </Name>
      <Address>
         <Street>456 Puke Drive</Street>
         <City>Lawrence</City>
         <State>KS</State>
         <Zip>66049</Zip>
      </Address>
      <Phone type="Home">785-555-1235</Phone>
   </Employee>
</Employees>

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to