# Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you under the Apache License, Version 2.0 (the # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. # XML handling functions from StringIO import StringIO from xml.parsers import expat import xml.etree.ElementTree as et from util import * from elemutil import * # Read a list of XML attributes def readAttributes(a): if a == (): return a return cons((attribute, "'" + car(car(a)), cadr(car(a))), readAttributes(cdr(a))) # Read an XML element def readElement(e): a = tuple(e.items()) c = tuple(e.getchildren()) l = (element, "'" + e.tag) + readAttributes(a) + readElements(c) if e.text == None or c != (): return l return l + (e.text,) # Read a list of XML elements def readElements(l): if l == (): return l return cons(readElement(car(l)), readElements(cdr(l))) # Return true if a list of strings represents an XML document def isXML(l): if isNull(l): return False if car(l)[0:5] != "