XML Parser

XML Parser

Postby Jack » Thu Feb 05, 2009 2:53 pm

I have to read an XML file and write the information to a dbf .
Is there a parser to see the fields and contents of the fields
.
Thanks .
Jack
 
Posts: 280
Joined: Wed Jul 11, 2007 11:06 am

Re: XML Parser

Postby Antonio Linares » Thu Feb 05, 2009 6:07 pm

Jack,

Please review this thread:

viewtopic.php?f=3&t=14362
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41324
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: XML Parser

Postby Jack » Tue Feb 10, 2009 9:24 pm

I give a look at the previous message and try this sample but have an error message at this instruction : oRs:Open( oStream )

What to do ??


FUNCTION MAIN()

LOCAL oStream, oRs

LOCAL i

oStream = CREATEOBJECT( "ADODB.Stream" )

oStream:Open()

oStream:WriteText( MEMOREAD( "TEST.XML" ) )

oStream:Position = 0

oRs = CREATEOBJECT( "ADODB.Recordset" )

oRs:Open( oStream ) <=== Error at this line ???

oStream:Close()

WHILE !oRs:EOF
FOR i = 0 TO oRs:Fields:Count - 1
? oRs:Fields( i ):Value
NEXT

?

oRs:MoveNext()
ENDDO

oRs:Close()

INKEY( 0 )

RETURN NIL


EMG
EMAG Software Homepage: http://www.emagsoftware.it
The EMG's ZX-Spectrum Page: http://www.emagsoftware.it/spectrum
The Best of Spectrum Games: http://www.emagsoftware.it/tbosg
The EMG Music page: http://www.emagsoftware.it/emgmusic
Enrico Maria Giordano

Posts: 2991
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia
Website
Jack
 
Posts: 280
Joined: Wed Jul 11, 2007 11:06 am

Re: XML Parser

Postby Enrico Maria Giordano » Tue Feb 10, 2009 9:36 pm

Probably your TEST.XML is not a valid XML file.

EMG
User avatar
Enrico Maria Giordano
 
Posts: 8332
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia

Re: XML Parser

Postby Jack » Wed Feb 11, 2009 12:58 pm

Here is the xml file i use for the test .
Thanks for your help .

<?xml version='1.0' encoding='UTF-8'?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
<title>Sources</title>
<link>http://www.fivetechsoft.com/news</link>
<description>Dynamic news reader</description>
<item>
<title>News</title>
<link>News</link>
<description>News sources</description>
<pubDate>23 Jan 2009 10:04 am</pubDate>
</item>
<item>
<title>Tech</title>
<link>Tech</link>
<description>Tech sources</description>
<pubDate>23 Jan 2009 10:04 am</pubDate>
</item>
</channel>
</rss>
Jack
 
Posts: 280
Joined: Wed Jul 11, 2007 11:06 am

Re: XML Parser

Postby Enrico Maria Giordano » Wed Feb 11, 2009 1:09 pm

Sorry, it seems that your XML file is not compatible with ADO stream format.

EMG
User avatar
Enrico Maria Giordano
 
Posts: 8332
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia

Re: XML Parser

Postby Jack » Thu Feb 12, 2009 9:12 pm

Could you show me a sample of a good xml file .
Thanks .
Jack
 
Posts: 280
Joined: Wed Jul 11, 2007 11:06 am

Re: XML Parser

Postby Enrico Maria Giordano » Thu Feb 12, 2009 9:18 pm

I don't know if this is a "good" one but it works with ADO stream:

Code: Select all  Expand view
<xml xmlns:s='uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882'
   xmlns:dt='uuid:C2F41010-65B3-11d1-A29F-00AA00C14882'
   xmlns:rs='urn:schemas-microsoft-com:rowset'
   xmlns:z='#RowsetSchema'>
<s:Schema id='RowsetSchema'>
   <s:ElementType name='row' content='eltOnly'>
      <s:AttributeType name='FIRST' rs:number='1' rs:nullable='true' rs:maydefer='true' rs:writeunknown='true'>
         <s:datatype dt:type='string' dt:maxLength='20'/>
      </s:AttributeType>
      <s:AttributeType name='LAST' rs:number='2' rs:nullable='true' rs:maydefer='true' rs:writeunknown='true'>
         <s:datatype dt:type='string' dt:maxLength='20'/>
      </s:AttributeType>
      <s:AttributeType name='STREET' rs:number='3' rs:nullable='true' rs:maydefer='true' rs:writeunknown='true'>
         <s:datatype dt:type='string' dt:maxLength='30'/>
      </s:AttributeType>
      <s:AttributeType name='CITY' rs:number='4' rs:nullable='true' rs:maydefer='true' rs:writeunknown='true'>
         <s:datatype dt:type='string' dt:maxLength='30'/>
      </s:AttributeType>
      <s:AttributeType name='STATE' rs:number='5' rs:nullable='true' rs:maydefer='true' rs:writeunknown='true'>
         <s:datatype dt:type='string' dt:maxLength='2'/>
      </s:AttributeType>
      <s:AttributeType name='ZIP' rs:number='6' rs:nullable='true' rs:maydefer='true' rs:writeunknown='true'>
         <s:datatype dt:type='string' dt:maxLength='10'/>
      </s:AttributeType>
      <s:AttributeType name='HIREDATE' rs:number='7' rs:nullable='true' rs:maydefer='true' rs:writeunknown='true'>
         <s:datatype dt:type='dateTime' rs:dbtype='variantdate' dt:maxLength='16' rs:fixedlength='true'/>
      </s:AttributeType>
      <s:AttributeType name='MARRIED' rs:number='8' rs:maydefer='true' rs:writeunknown='true'>
         <s:datatype dt:type='boolean' dt:maxLength='2' rs:fixedlength='true'/>
      </s:AttributeType>
      <s:AttributeType name='AGE' rs:number='9' rs:nullable='true' rs:maydefer='true' rs:writeunknown='true'>
         <s:datatype dt:type='float' dt:maxLength='8' rs:precision='15' rs:fixedlength='true'/>
      </s:AttributeType>
      <s:AttributeType name='SALARY' rs:number='10' rs:nullable='true' rs:maydefer='true' rs:writeunknown='true'>
         <s:datatype dt:type='float' dt:maxLength='8' rs:precision='15' rs:fixedlength='true'/>
      </s:AttributeType>
      <s:AttributeType name='NOTES' rs:number='11' rs:nullable='true' rs:maydefer='true' rs:writeunknown='true'>
         <s:datatype dt:type='string' dt:maxLength='70'/>
      </s:AttributeType>
      <s:extends type='rs:rowbase'/>
   </s:ElementType>
</s:Schema>
<rs:data>
   <z:row FIRST='Homer' LAST='Simpson' STREET='32179 Maiden Lane' CITY='Springfield' STATE='IL' ZIP='20503-8202'
       HIREDATE='1992-09-18T00:00:00' MARRIED='True' AGE='91' SALARY='5900' NOTES='This is a test for record 1'/>
   <z:row FIRST='Ceci' LAST='Gibbard' STREET='9540 Raynes Park Road' CITY='Miami' STATE='MA' ZIP='55774-2304' HIREDATE='1984-10-17T00:00:00'
       MARRIED='False' AGE='28' SALARY='123700' NOTES='This is a test for record 2'/>
   <z:row FIRST='Reg' LAST='Kaczocha' STREET='30522 Park Ten Place' CITY='Scottsdale' STATE='WY' ZIP='09226-1483'
       HIREDATE='1989-05-23T00:00:00' MARRIED='True' AGE='43' SALARY='82900' NOTES='This is a test for record 3'/>
   <z:row FIRST='Ralph' LAST='Jochum' STREET='8211 Carnegie Center' CITY='Hingham' STATE='SD' ZIP='71947-5114'
       HIREDATE='1985-05-09T00:00:00' MARRIED='False' AGE='34' SALARY='138300' NOTES='This is a test for record 4'/>
   <z:row FIRST='Simpson' LAST='Jaffee' STREET='32736 Meadowbrook Drive' CITY='Nedlands' STATE='ID' ZIP='38179-3789'
       HIREDATE='1990-12-11T00:00:00' MARRIED='True' AGE='88' SALARY='51800' NOTES='This is a test for record 5'/>
</rs:data>
</xml>


EMG
User avatar
Enrico Maria Giordano
 
Posts: 8332
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia

Re: XML Parser

Postby Jack » Sat Feb 14, 2009 11:11 am

Enrico,
I try with your sample
I still have an error on line 18 Open methode ===> oRs:Open( oStream )

Here is my code :
#include "fivewin.ch"
FUNCTION MAIN()

LOCAL oStream, oRs

LOCAL i
msgalert(MEMOREAD( "TEST.XML" ))
oStream = CREATEOBJECT( "ADODB.Stream" )

oStream:Open()
MsgAlert("Ok open")
oStream:WriteText( MEMOREAD( "TEST.XML" ) )
MsgAlert("Ok read")
oStream:Position = 0

oRs = CREATEOBJECT( "ADODB.Recordset" )
MsgAlert("Ok Record set")
oRs:Open( oStream ) && ERROR with this Line
msgAlert("Ok open stream")
oStream:Close()

WHILE !oRs:EOF
FOR i = 0 TO oRs:Fields:Count - 1
? oRs:Fields( i ):Value
NEXT

?

oRs:MoveNext()
ENDDO

oRs:Close()

INKEY( 0 )

RETURN NIL
Jack
 
Posts: 280
Joined: Wed Jul 11, 2007 11:06 am

Re: XML Parser

Postby Enrico Maria Giordano » Sat Feb 14, 2009 11:32 am

Works fine here.

EMG
User avatar
Enrico Maria Giordano
 
Posts: 8332
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia


Return to FiveWin for Harbour/xHarbour

Who is online

Users browsing this forum: Otto and 17 guests