Source code for pykml.parser

'''pyKML Parser Module

The pykml.parser module provides functions that can be used to parse KML 
from a file or remote URL.
'''
import os
from lxml import etree, objectify

[docs]class Schema(): "A class representing an XML Schema used to validate KML documents" def __init__(self, schema): module_dir = os.path.split(__file__)[0] # get the module path schema_file = os.path.join(module_dir, "schemas", schema) with open(schema_file) as f: self.schema = etree.XMLSchema(file=f)
[docs] def validate(self, doc): """Validates a KML document This method eturns a boolean value indicating whether the KML document is valid when compared to the XML Schema.""" return self.schema.validate(doc)
[docs] def assertValid(self, doc): """Asserts that a KML document is valide The method generates a validation error if the document is not valid when compared to the XML Schema. """ return self.schema.assertValid(doc)
[docs]def fromstring(text, schema=None): """Parses a KML text string This function parses a KML text string and optionally validates it against a provided schema object""" if schema: parser = objectify.makeparser(schema = schema.schema) return objectify.fromstring(text, parser=parser) else: return objectify.fromstring(text)
[docs]def parse(fileobject, schema=None): """Parses a file object This functon parses a KML file object, and optionally validates it against a provided schema. """ if schema: # with validation parser = objectify.makeparser(schema = schema.schema, strip_cdata=False) return objectify.parse(fileobject, parser=parser) else: # without validation return objectify.parse(fileobject)