Пример #1
0
 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)
Пример #2
0
    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)
Пример #3
0
        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)
Пример #4
0
 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)