| 1 | #!/usr/bin/python |
|---|
| 2 | |
|---|
| 3 | import pyexpat |
|---|
| 4 | |
|---|
| 5 | def onStartElement(name, attrs): |
|---|
| 6 | qname_bad = name.split(" ") |
|---|
| 7 | qname_good = name.rsplit(" ", 1) |
|---|
| 8 | attrs_bad = dict() |
|---|
| 9 | attrs_good = dict() |
|---|
| 10 | for k, v in attrs.items(): |
|---|
| 11 | if k.find(" ") != -1: |
|---|
| 12 | aqname = k.split(" ") |
|---|
| 13 | attrs_bad [(aqname[0], aqname[1])] = v |
|---|
| 14 | aqname = k.rsplit(" ", 1) |
|---|
| 15 | attrs_good[(aqname[0], aqname[1])] = v |
|---|
| 16 | del attrs[k] |
|---|
| 17 | print "BAD: \n----\n%s\n%s\n" % (qname_bad, attrs_bad) |
|---|
| 18 | print "GOOD:\n----\n%s\n%s\n" % (qname_good, attrs_good) |
|---|
| 19 | |
|---|
| 20 | parser = pyexpat.ParserCreate("UTF-8", " ") |
|---|
| 21 | parser.StartElementHandler = onStartElement |
|---|
| 22 | |
|---|
| 23 | xml = """<?xml version="1.0"?> |
|---|
| 24 | <root xmlns="some weird namespace " |
|---|
| 25 | xmlns:a="another weird namespace" |
|---|
| 26 | a:foo='bar' |
|---|
| 27 | /> |
|---|
| 28 | """ |
|---|
| 29 | |
|---|
| 30 | parser.Parse(xml) |
|---|