使用Python和xml.etree.ElementTree解析xml文件

使用Python解析xml文件的文章很多,确实也很简单,但是当文件中含有命名空间名的时候,许多文章中给出的例子就无法工作了,其实解决这一问题也很简单,只需加上一行正则就可以了!
欢迎给出意见和批评!


程序代码:
#!/usr/bin/python

import sys
import re
import xml.etree.ElementTree as ET

def parseOptions ():
    if len(sys.argv) < 2:
    print """
    USAGE:
    python program.py file
    """
    sys.exit(1)
    else:
    filename = sys.argv[1]
    return filename


def main ():
    filename = parseOptions()
    root = ET.parse(filename).getroot()
    r = re.compile('({.+})')
    xmlns = r.search(root.tag).group(1)
    for node in root:
        IdList = xmlns + 'IdList'
        if re.match(IdList, node.tag):
            for child in node:
                if child.tag.find('Id'):
                print child.text


if __name__ == '__main__':
    main()



XML文件:

    329
    20
    0
   
        18371695
        18353787
        18337261
        18312416
        18302187
        18232994
        18231669
        18223291
        18085574
        18058769
        18056069
        17984965
        17968707
        17939156
        17916468
        17875870
        17768677
        17763598
        17699872
        17695722
   

   
   

   
       
            taverna[All Fields]
            All Fields
            329
            Y
       

        GROUP
   

    taverna[All Fields]


转自:http://blog.chinaunix.net/space.php?uid=20683570&do=blog&id=1573019

你可能感兴趣的:(python)