使用sgmlib
默认python附带的... 输入1
string1 = '''
<root xmlns:x='www.test.com'>
<x:tag1 x:anyAttrib="anyValue" x:anyAttrib="anyValue" x:anyAttrib="anyValue" />
<x:tag2 x:anyAttrib="anyValue" x:anyAttrib="anyValue" x:anyAttrib="anyValue">
someValue
</x:tag2>
<x:tag3> someValue
'''
import re
import sgmllib
sgmllib.tagfind = re.compile('[a-zA-Z][-_.:a-zA-Z0-9]*')
starts = re.findall(sgmllib.tagfind, string1)
print starts
输出1
['root', 'xmlns:x', 'www.test.com', 'x:tag1', 'x:anyAttrib', 'anyValue', 'x:anyAttrib', 'anyValue', 'x:anyAttrib', 'anyValue', 'x:tag2', 'x:anyAttrib', 'anyValue', 'x:anyAttrib', 'anyValue', 'x:anyAttrib', 'anyValue', 'someValue', 'x:tag2', 'x:tag3', 'someValue']
或输入2
starts1 = re.finditer(sgmllib.tagfind, string1)
for x in starts1:
print x.start(), x.end(), x.group(0)
输出2:
5 9 root
10 17 xmlns:x
19 31 www.test.com
42 48 x:tag1
49 60 x:anyAttrib
62 70 anyValue
72 83 x:anyAttrib
85 93 anyValue
95 106 x:anyAttrib
108 116 anyValue
129 135 x:tag2
136 147 x:anyAttrib
149 157 anyValue
159 170 x:anyAttrib
172 180 anyValue
182 193 x:anyAttrib
195 203 anyValue
216 225 someValue
235 241 x:tag2
251 257 x:tag3
259 268 someValue
或使用elementTree
默认python附带的。http://docs.python.org/2/library/xml.etree.elementtree.html