def test_lxml(self): xs = xmlschema.XMLSchema(self.abspath('cases/examples/vehicles/vehicles.xsd')) xt1 = lxml_etree_parse(self.abspath('cases/examples/vehicles/vehicles.xml')) xt2 = lxml_etree_parse(self.abspath('cases/examples/vehicles/vehicles-1_error.xml')) self.assertTrue(xs.is_valid(xt1)) self.assertFalse(xs.is_valid(xt2)) self.assertTrue(xs.validate(xt1) is None) self.assertRaises(xmlschema.XMLSchemaValidationError, xs.validate, xt2)
def test_xml_resource_from_lxml(self): vh_etree = lxml_etree_parse(self.vh_xml_file) vh_root = vh_etree.getroot() resource = XMLResource(vh_etree) self.assertEqual(resource.source, vh_etree) self.assertEqual(resource.document, vh_etree) self.assertEqual(resource.root.tag, '{http://example.com/vehicles}vehicles') self.assertIsNone(resource.url) self.assertIsNone(resource.text) resource.load() self.assertIsNone(resource.text) resource = XMLResource(vh_root) self.assertEqual(resource.source, vh_root) self.assertEqual(resource.root.tag, '{http://example.com/vehicles}vehicles') self.assertIsNone(resource.url) self.assertIsNone(resource.text) resource.load() self.assertIsNone(resource.text)
def check_decoding_and_encoding_with_lxml(self): xml_tree = lxml_etree_parse(xml_file) namespaces = fetch_namespaces(xml_file) errors = [] chunks = [] for obj in self.schema.iter_decode(xml_tree, namespaces=namespaces): if isinstance(obj, xmlschema.XMLSchemaValidationError): errors.append(obj) else: chunks.append(obj) self.assertEqual(chunks, self.chunks, msg_template % "decode data change with lxml") self.assertEqual(len(errors), len(self.errors), msg_template % "errors number change with lxml") if not errors: root = xml_tree.getroot() options = { 'etree_element_class': lxml_etree_element, 'namespaces': namespaces, 'dict_class': ordered_dict_class, } self.check_etree_encode(root, cdata_prefix='#', **options) # Default converter self.check_etree_encode(root, ParkerConverter, validation='lax', **options) self.check_etree_encode(root, ParkerConverter, validation='skip', **options) self.check_etree_encode(root, BadgerFishConverter, **options) self.check_etree_encode(root, AbderaConverter, **options) self.check_etree_encode(root, JsonMLConverter, **options) options.pop('dict_class') self.check_json_serialization(root, cdata_prefix='#', **options) self.check_json_serialization(root, ParkerConverter, validation='lax', **options) self.check_json_serialization(root, ParkerConverter, validation='skip', **options) self.check_json_serialization(root, BadgerFishConverter, **options) self.check_json_serialization(root, AbderaConverter, **options) self.check_json_serialization(root, JsonMLConverter, **options)
def test_lxml(self): vh_xml_tree = lxml_etree_parse(self.vh_xml_file) self.assertEqual(self.vh_schema.to_dict(vh_xml_tree), _VEHICLES_DICT) self.assertEqual(xmlschema.to_dict(vh_xml_tree, self.vh_schema.url), _VEHICLES_DICT)