Revision 28793
Added by Dominika Tkaczyk almost 10 years ago
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
Madis update