diff --git a/src/bcf/pyproject.toml b/src/bcf/pyproject.toml index 4d7f1b401b..e126abe165 100644 --- a/src/bcf/pyproject.toml +++ b/src/bcf/pyproject.toml @@ -13,7 +13,7 @@ readme = "README.md" requires-python = ">=3.8" keywords = ["IFC", "BCF", "BIM"] dependencies = [ - "xsdata", + "xsdata>=24.4", "numpy", "ifcopenshell", ] diff --git a/src/bcf/src/bcf/xml_parser.py b/src/bcf/src/bcf/xml_parser.py index 9f3878f769..ed13f747ce 100644 --- a/src/bcf/src/bcf/xml_parser.py +++ b/src/bcf/src/bcf/xml_parser.py @@ -10,7 +10,7 @@ from xsdata.formats.dataclass.serializers.config import SerializerConfig def build_xml_parser(context: Optional[XmlContext] = None) -> XmlParser: """Return a parser for an XML file.""" parser = XmlParser(context=context or XmlContext()) - parser.register_namespace("xs", "http://www.w3.org/2001/XMLSchema") + parser.register_namespace(ns_map=parser.ns_map, prefix="xs", uri="http://www.w3.org/2001/XMLSchema") return parser @@ -68,7 +68,7 @@ class XmlParserSerializer: """ return self.parser.from_bytes(xml, clazz) - def serialize(self, obj: T, ns_map: Optional[dict[str, str]] = None) -> str: + def serialize(self, obj: T, ns_map: Optional[dict[Optional[str], str]] = None) -> str: """ Serialize an object to XML. @@ -79,5 +79,5 @@ class XmlParserSerializer: Returns: The XML as string. """ - ns_map = ns_map or {"xs": "http://www.w3.org/2001/XMLSchema"} + ns_map = ns_map or self.parser.ns_map or {"xs": "http://www.w3.org/2001/XMLSchema"} return self.serializer.render(obj, ns_map)