Project

General

Profile

« Previous | Next » 

Revision 28793

Added by Dominika Tkaczyk almost 10 years ago

Madis update

View differences:

xmlparse.py
123 123
    row1val1 |      |
124 124
    row2val1 | asdf | asdf<d>row2val</d>
125 125

  
126
    >>> sql('''select * from (xmlparse  root:a '{"a/b":"", "a":"*"}' select * from table2)''') # doctest: +NORMALIZE_WHITESPACE
127
    b        | $
128
    ------------------------------------------------------
129
    row1val1 | <b>row1val1</b>
130
    row2val1 |
131
    <b>
132
    row2val1</b><c>asdf<d>row2val</d></c>
133

  
126 134
    >>> sql("select * from (xmlparse '<a><b>v</b><c>*</c></a>' select * from table2)")
127 135
    b        | c_$
128 136
    -----------------------------
......
494 502
                        
495 503
            elif type(jxp) is OrderedDict:
496 504
                for k,v in jxp.iteritems():
497
                    path=k.split('/')
505
                    path = k.split('/')
498 506
                    if path[0] == '':
499
                        path=path[1:]
507
                        path = path[1:]
500 508
                        
501
                    if self.subtreeroot==None:
502
                        self.subtreeroot=path[0]
509
                    if self.subtreeroot is None:
510
                        self.subtreeroot = path[0]
503 511

  
504 512
                    try:
505
                        path = path[ path.index(self.subtreeroot)+1: ]
513
                        path = path[path.index(self.subtreeroot)+1:]
506 514
                    except ValueError:
507 515
                        continue
508 516

  
509
                    if path==[]:
510
                        continue
511
                        
512 517
                    if type(v) in (list, OrderedDict):
513 518
                        for i in v:
514 519
                            if i in ('*', '$'):
515 520
                                s.addtoschema(path+['*'])
516 521
                            else:
522
                                # if path == []:
523
                                #     continue
517 524
                                s.addtoschema(path)
518 525
                    else:
519 526
                        if v in ('*', '$'):
520 527
                            s.addtoschema(path+['*'])
521 528
                        else:
529
                            # if path == []:
530
                            #     continue
522 531
                            s.addtoschema(path)
523 532
            else:
524 533
                xpath=[]

Also available in: Unified diff