Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import xml.sax
- class EpiserverFeedValidator(ContentHandler):
- def __init__(self):
- contentTypes = {"link":checkUrl, "p:imageLink":checkImageUrl, "title":checkTitle, "p:unitPrice":checkPrice,}
- self.elementType = ""
- self.elementContent = ""
- self.processElement = False
- self.guid = ""
- linkSet = {}
- imageLinkSet = {}
- def startElement(self, name, attrs):
- self.elementType = ""
- self.elementContent = ""
- self.processElement = False
- if name is "guid":
- self.guid = name
- if name in contentTypes:
- self.elementType = name
- self.processElement = True
- def characters(self, ch):
- if self.processElement:
- self.elementContent = self.elementContent + ch
- def endElement(self, name):
- if self.processElement:
- processElements(name)
- def processElements(name):
- contentTypes(name)(self)
- def checkUrl(self):
- if len(self.elementContent) > 300:
- print("LINK TOO LONG: " + self.elementContent)
- if self.elementContent in linkSet:
- print("DUPLICATE LINK: " + self.elementContent)
- else:
- linkSet.add(self.elementContent)
- def checkImageUrl(self):
- if len(self.elementContent) > 300:
- print("IMAGE LINK TOO LONG FOR " + self.guid + " : " + self.elementContent)
- if self.elementContent in imageLinkSet:
- print("DUPLICATE IMAGE LINK FOR " + self.guid + " : " + self.elementContent)
- else:
- imageLinkSet.add(self.elementContent)
- def checkTitle(self):
- if len(self.elementContent) > 200:
- print("IMAGE LINK TOO LONG FOR " + self.guid + " : " + self.elementContent)
- def checkPrice(self):
- if self.elementContent is "":
- print("UNIT PRICE MISSING FOR " + self.guid + " : " + self.elementContent)
- parser = xml.sax.make_parser()
- parser.setContentHandler(EpiserverFeedValidator)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement