Skip to main content

A new jEDI that allows you to access the XML file (currently read-only) as if it was a standard jBASE hashed file with the key being the row of the XML file.

XMLJEDI is the JEDI program.

MAKEXML will generate a sample XML item with however many data items you want.

TEXTXML allows you to test for best blocksize for the XML file.



With this new JEDI, you can add dict= portion of param and it will create DICT items when the XML is first mapped.  You can also specify the blocksize. 

 

When run against a 500,000 record XML file with a size of 94Mb, it can LIST the file in 3 minutes and 24 seconds.

 

Here is an example of the jEDI stub for a sample xml file called /big/tmp/SampleLarge.xml :

jsh>ED . SAMPLE.XML<Enter>
New Record

SAMPLE.XML

TOP

I<Enter>

001+ JBC__SOB JediInitSUB XMLJEDI filename=/big/tmp/SampleLarge.xml,xmlmap=SAMPLE.MAP,dict=SAMPLE.XML]D,blocksize=63488<Enter>

002+<Enter>

FI<Enter>

 

After you add the jEDI stub to the current directory, you create the DICT portion

 

jsh> CREATE-FILE DICT SAMPLE.XML<Enter>

 

The only other thing needed is a XML.MAPS file and item for the XML file containing the element that defines each record.

 

jsh>CREATE-FILE XML.MAPS<Enter>

 

jsh>ED XML.MAPS SAMPLE.MAP<Enter>

New Record
SAMPLE.MAP
TOP

.I<Enter>

001+ Large Sample XML record<Enter>

002+ PLANT<Enter>                                     <-- In this sample, <PLANT> and </PLANT> envelope the data "rows"

003+<Enter>

.FI<Enter>

 

Now that the jEDI stub is in place and the supporting XML.MAPS item, the first access of the file will create the DICT items.  After that you can adjust field 4 of the XML.MAPS item to apply conversions to the data before being presented.

 

jsh> ED SAMPLE.XML 1<Enter>
1

TOP

.P<Enter>

TOP

001 1

002 Buttercup

003 Erythronium americanum

004 21

005 Mostly Shady

006 $12.59                                       <-- In the next step you will remove the $ and comma for fields 6 and 7

007 12,599

BOTTOM

.EX<Enter>

Record '1' exited from file 'SAMPLE.XML'

 

jsh>ED XML.MAPS SAMPLE.MAP<Enter>

SAMPLE.MAP
TOP
.P<Enter>

TOP

001 Large Sample XML record

002 PLANT

003 XMLROW]COMMON]BOTANICAL]ZONE]LIGHT]PRICE]AVAILABILITY

BOTTOM

.I<Enter>

004+ ]]]]]MCN]MCN<Enter>                                 <-- Adding the internal conversion of MCN for PRICE and AVAILABILTY
005+ <Enter>                                                                                So, the ] are actually value marks (^]).

BOTTOM                                                                                        This can also be CALL XXXX where XXXX is a subroutine with arguments of indata,outdata that
.FI<Enter>                                                                                      can manipulate the data based on the indata passed and return outdata for this field.

 

jsh> ED SAMPLE.XML 1<Enter>

1

TOP

.P<Enter>

TOP

001 1

002 Buttercup

003 Erythronium americanum

004 21

005 Mostly Shady

006 1259                                           <-- Now presented as "multi-value style" ICONV data for PRICE and AVAILABILITY

007 12599

BOTTOM

.EX<Enter>

Record '1' exited from file 'SAMPLE.XML'

 

Now fix the DICT items which are the number of the value and the data content of field 3 of XML.MAPS

 

ED DICT SAMPLE.XML 6 PRICE 7 AVAILABILITY

6

TOP

.P<Enter>

TOP

001 A

002 6

003 PRICE

004

005

006

007

008

009 L

010 10

BOTTOM

.7<Enter>

007

.R<Enter>

007+MR2,$<Enter>

.FI<Enter>

Record '6' written to file 'DICT SAMPLE.XML'

PRICE

TOP

.7<Enter>

007

.R<Enter>

007+MR2,$<Enter>

.FI<enter>

Record 'PRICE' written to file 'DICT SAMPLE.XML'

7<Enter>

TOP

.P<Enter>

TOP

001 A

002 7

003 AVAILABILITY

004

005

006

007

008

009 L

010 10

BOTTOM

.7<Enter>

007

.R

007+MR0,<Enter>

.FI<Enter>

Record '7' written to file 'DICT SAMPLE.XML'

AVAILABILITY

TOP

.7<Enter>

007

.R<Enter>

007+MR0,<Enter>

.FI<Enter>

Record 'AVAILABILITY' written to file 'DICT SAMPLE.XML'


jsh> LIST SAMPLE.XML '1'<Enter>

 

PAGE    1                                                                                    06:59:59  10 MAY 2022

 

SAMPLE.XML....    XMLROW....    COMMON....    BOTANICAL.    ZONE......    LIGHT.....    PRICE.....    AVAILABILITY

 

1                 1             Buttercup     Erythroniu    21            Mostly Sha    $12.59        12,599

                                              m american                  dy

                                              um

 

 

 

 

 



------------------------------
Dan Ell
Senior Software Engineer
Rocket Internal - All Brands
------------------------------