FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin for Harbour/xHarbour XML Parser
Posts: 300
Joined: Wed Jul 11, 2007 11:06 AM
XML Parser
Posted: Thu Feb 05, 2009 02: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 .

Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM
Re: XML Parser
Posted: Thu Feb 05, 2009 06:07 PM

Jack,

Please review this thread:

viewtopic.php?f=3t=14362

&

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 300
Joined: Wed Jul 11, 2007 11:06 AM
Re: XML Parser
Posted: Tue Feb 10, 2009 09: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

Posts: 9022
Joined: Thu Oct 06, 2005 08:17 PM
Re: XML Parser
Posted: Tue Feb 10, 2009 09:36 PM

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

EMG

Posts: 300
Joined: Wed Jul 11, 2007 11:06 AM
Re: XML Parser
Posted: 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>

Posts: 9022
Joined: Thu Oct 06, 2005 08:17 PM
Re: XML Parser
Posted: Wed Feb 11, 2009 01:09 PM

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

EMG

Posts: 300
Joined: Wed Jul 11, 2007 11:06 AM
Re: XML Parser
Posted: Thu Feb 12, 2009 09:12 PM

Could you show me a sample of a good xml file .
Thanks .

Posts: 9022
Joined: Thu Oct 06, 2005 08:17 PM
Re: XML Parser
Posted: Thu Feb 12, 2009 09:18 PM
I don't know if this is a "good" one but it works with ADO stream:

<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
Posts: 300
Joined: Wed Jul 11, 2007 11:06 AM
Re: XML Parser
Posted: 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( &quot;TEST.XML&quot; ))
oStream = CREATEOBJECT( &quot;ADODB.Stream&quot; )

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

oRs = CREATEOBJECT( &quot;ADODB.Recordset&quot; )
MsgAlert(&quot;Ok Record set&quot;)
oRs:Open( oStream )  &amp;&amp; ERROR with this Line
msgAlert(&quot;Ok open stream&quot;)
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
Posts: 9022
Joined: Thu Oct 06, 2005 08:17 PM

Continue the discussion