#!/usr/bin/python # # Copyright (c) 2001, Brian St. Pierre # # Permission to use, copy, modify, and distribute this software and its # documentation for any purpose, without fee, and without a written agreement # is hereby granted, provided that the above copyright notice and this # paragraph and the following two paragraphs appear in all copies. # # IN NO EVENT SHALL THE AUTHOR BE LIABLE TO ANY PARTY FOR DIRECT, # INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST # PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, # EVEN IF THE AUTHOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # THE AUTHOR SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A # PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" # BASIS, AND THE AUTHOR HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, # SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. # import xml.parsers.expat import sys, string g_in_desired_field = 0 def start_element(name, attrs): global g_fieldname, g_in_desired_field if name == g_fieldname: g_in_desired_field = 1 def end_element(name): global g_fieldname, g_in_desired_field if name == g_fieldname: g_in_desired_field = 0 def char_data(data): global g_fieldname, g_in_desired_field if g_in_desired_field: print data p = xml.parsers.expat.ParserCreate() p.StartElementHandler = start_element p.EndElementHandler = end_element p.CharacterDataHandler = char_data if len(sys.argv) == 2: # No filename, read from stdin. f = sys.stdin g_fieldname = sys.argv[1] else: # Got filename filename = sys.argv[1] f = open(filename) g_fieldname = sys.argv[2] p.ParseFile(f)