6 from mutil.XmlExtractor import XmlExtractor
7 from mutil import XmlExtractor as XMLE
9 def eval_class(classs, item):
10 item_hira = item.split(".")
12 class_hira = classs.split(".")
13 if len(class_hira) < len(item_hira):
15 for i in range(len(item_hira)):
16 if item_hira[i] != class_hira[i]:
20 def eval_attribute(classs, attribute):
21 for item in attribute.split(":"):
22 ret,ilen = eval_class(classs, item)
27 def is_for_print(classs, attrs):
32 if "include" in attrs:
33 include,ilen = eval_attribute(classs, attrs["include"])
34 if "exclude" in attrs:
35 exclude,elen = eval_attribute(classs, attrs["exclude"])
36 if ilen > 0 and elen == 0:
38 elif elen > 0 and ilen == 0:
40 elif ilen > 0 and elen > 0:
54 def extract(file, classs, target):
55 source = XmlExtractor()
56 source.openInput(file)
59 out_file = open(target, "w")
61 source.requireChild("document")
62 (ctl,elem, value, attrs) = source.extractElement(XMLE.EC_BEG)
63 while ctl != XMLE.EC_END:
65 raise EnvironmentError("<text> node expected")
66 if is_for_print(classs, attrs):
67 out_file.write(value+"\n")
68 (ctl,elem, value, attrs) = source.extractElement(ctl)